CerrUnozZ Skrevet 9. september 2008 Del Skrevet 9. september 2008 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
Nidaroo Skrevet 9. september 2008 Del Skrevet 9. september 2008 Du kan jo starte med å legge ut de spørringene du har laget hittil, så vi kan se hva som kan være galt? Lenke til kommentar
CerrUnozZ Skrevet 9. september 2008 Forfatter Del Skrevet 9. september 2008 (endret) 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 9. september 2008 av CerrUnozZ Lenke til kommentar
terjeelde Skrevet 9. september 2008 Del Skrevet 9. september 2008 SELECT henter bare ut data. Jeg er litt usikker på om jeg forstår hva du mener, men tror kanskje du er ute etter noe ala: UPDATE Tabellnavn SET [sum Kr] = [Antall Timer]*[Pris Per Time] Kan det stemme? Lenke til kommentar
CerrUnozZ Skrevet 9. september 2008 Forfatter Del Skrevet 9. september 2008 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
terjeelde Skrevet 9. september 2008 Del Skrevet 9. september 2008 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
CerrUnozZ Skrevet 9. september 2008 Forfatter Del Skrevet 9. september 2008 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
terjeelde Skrevet 9. september 2008 Del Skrevet 9. september 2008 Da jeg skal benytte tabellen synlig må jeg ha sumkolonnen spesifikt endret hver gang. Ikke helt sikker på hva du mener her? Du kan i allefall bare regne ut med SELECTen som henter data? Lenke til kommentar
CerrUnozZ Skrevet 9. september 2008 Forfatter Del Skrevet 9. september 2008 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
CerrUnozZ Skrevet 9. september 2008 Forfatter Del Skrevet 9. september 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå