Gå til innhold

oppdatering av tabell vha spørring


Anbefalte innlegg

jeg lager en spørring påbakgrunn av en tabell. og sist jeg gjorde det kunne jeg endre ett felt i tabellen og resultatet av spøøringen kom opp i det andre. Men når jeg nå forsøker det samme går dette ikke.

 

Jeg lagen en spørring der jeg legger 2 kolonner sammen Sum:kol1*kol2, endrer format til valuta, jeg kjører så spørringen og den fungere perekt. men hvorfor gjør det ikke det i selve tabellen ?

 

har jeg glemt noe?.

Lenke til kommentar
Videoannonse
Annonse

Spøøringen jeg har laget ser slik ut:

 

SELECT Tabellnavn.ID, Tabellnavn.Ressurstype, Tabellnavn.[Antall Timer], Tabellnavn.[Pris Per Time], [Antall Timer]*[Pris Per Time] AS [sum Kr], Tabellnavn.Felt5, Tabellnavn.Felt6, Tabellnavn.[Virkelige Timer], Tabellnavn.TimePris, [Virkelige timer]*[TimePris] AS [sum Kroner]

FROM Tabellnavn;

 

når jeg kjører spøringen under spørringer i access så fungerer den glimrende, men når jeg endrer verdiene i selve tabellen skjer ingenting.

 

må jeg på noen måte kople spørringen og tabellen sammen slik at verdiene endres slik spørringen ber om.

 

Jeg kjører spørringen og tabellen side ved side og antall timer endrer seg begge steder men Sum Kr endrer seg kun i spørringen men ikke i tabellen.

Endret av CerrUnozZ
Lenke til kommentar

Tusen takk for svar nå er vi inne på noe hvertfall men den jeg benytter nå er:

 

UPDATE Tabellnavn SET [Antall Timer]=?, [Pris Per Time]=?, [sum Kr] = [Antall Timer]*[Pris Per Time] WHERE (ID=?)

 

Det som nå skjer er at den oppdaterer antall timer når jeg endrer den, men sum kr blir ikke oppdatert før jeg endrer antall timer en gang til, da endrer sum kr seg til forrige sum.

 

og ikke den nye endrede riktige summen.

Lenke til kommentar

Ahh, ja, det stemmer nok.

 

Det er nok data i databasen når spørringen startes som legges til grunn.

 

Vanligvis anbefaler jeg at man prøver å ikke lagre data dobbelt.

 

Hvis dette ikke er en veldig stor database, så kan du f.eks kanskje hoppe over feltet, men lage ett view på tabellen, som gjør kalkulasjonen før den legges inn?

 

Annet alternativ er å flytte regnestykket til programmet som kaller spørringen. Det er to måter du kan gjøre det på. Den ene er å rett og slett regne ut, og gi det ferdige regnestykket til programmet. Andre alternativet er:

 

Endre:

UPDATE Tabellnavn SET [Antall Timer]=?, [Pris Per Time]=?, [sum Kr] = [Antall Timer]*[Pris Per Time] WHERE (ID=?)

Til:

UPDATE Tabellnavn SET [Antall Timer]=?, [Pris Per Time]=?, [sum Kr] = ?*? WHERE (ID=?)

 

På den måten kan du ganske enkelt gi antall timer, og pris pr. time to ganger til spørringen, og så gjør den det du vil.

 

 

Men i alle tilfelle, dersom du ikke skal bruke summen veldig veldig aktivt til å søke opp rader i en stor database, så du trenger det for ytelse, så ville jeg hoppet over.

 

Grei tommelregel er at dersom du ikke har en index på den kolonnen, så må du uansett gjøre en full scan av tabellen når du slår opp verdier der. Da kan du like gjerne droppe den kolonnen, og kjøre en spørring ala:

 

SELECT * FROM Tabellnavn WHERE [Antall Timer]*[Pris Per Time] >= 10000;

 

Du taper ikke noe på ytelse, men slipper alt styret med å holde sum som eget felt. Faktisk kan det godt hende det ville blitt raskere, siden databasen ville blitt mindre.

 

Terje

Lenke til kommentar

Da jeg skal benytte tabellen synlig må jeg ha sumkolonnen spesifikt endret hver gang.

Når jeg la inn:

UPDATE Tabellnavn SET [Antall Timer]=?, [Pris Per Time]=?, [sum Kr] = ?*? WHERE (ID=?)

Så blir ikke Sum kr feltet korrekt det virker som om det ganger sammen alle felt i begge kolonner til en sum, men den oppdaterer databasen med summen direkte.

 

Det virker som om den i setningen:

UPDATE Tabellnavn SET [Antall Timer]=?, [Pris Per Time]=?, [sum Kr] =[Antall Timer]*[Pris Per Time] WHERE (ID=?)

 

Tar den verdien av [Antall Timer] som ligger der før setningen kjøres å legger inn i [sum Kr]

 

Det må da være mulig å sette ny verdi å regne med den verdien i samme setning?

Lenke til kommentar

SELECT ID, [Antall Timer], [Pris Per Time], [sum Kr]=[Antall Timer]*[Pris Per Time] FROM Tabellnavn.

 

Jeg forsøkte denne men den fungerte ikke.

Jeg kan prøve:

SELECT ID, [Antall Timer], [Pris Per Time],Antall Timer]*[Pris Per Time] AS [sum Kr] FROM Tabellnavn

Lenke til kommentar

Nå forsøkte jeg følgende SELECT kommando:

 

SELECT ID, [Antall Timer], [Pris Per Time], SUM([Antall Timer] * [Pris Per Time]) AS [sum Kr] FROM Tabellnavn GROUP BY ID, [Pris Per Time], [Antall Timer]

 

Da fungerer spørringen men updaten fungerer da ikke,

Hvordan er det når man benytter AS, lager den da en "virtuell" kolonne, slik at den ikke benytter den som ligger i tabellen?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...