Avatar billede Klodshans Juniormester
26. december 2016 - 17:17 Der er 12 kommentarer og
2 løsninger

Km beregner

Hej,
Jeg er ikke en sql haj, men jeg skal have Access til at beregne mine kørte km.
Der skal trækkes to km stande fra hindanden i samme kolonne
Tabellen hedder: Dieselforbrug
Forespørgslen jeg vil køre den i hedder: Dieselforbrug alle data.
Jeg har forsøgt med følgende, men det virker ikke. der kommer diverse popup bokse. Hjælp.

SELECT Dieselforbrug.id, Dieselforbrug.Dato, Dieselforbrug.KM, DLookUp("[KM]","Dieselforbrug","[ID] = " & [ID]-1) AS [Previous KM], Dieselforbrug.[Km kørt]
FROM Dieselforbrug;
Avatar billede terry Ekspert
26. december 2016 - 17:51 #1
Try something like this

SELECT DF.ID, DF.KM, [KM]-(SELECT  max(KM) from dieselforbrug where dieselforbrug.ID < DF.ID) AS [KM Kørt]
FROM Dieselforbrug AS DF
Avatar billede terry Ekspert
26. december 2016 - 17:52 #2
Not a good idea to use ID-1 because there is no guaranty the previous record will have an id which is one less
Avatar billede terry Ekspert
26. december 2016 - 18:00 #3
In my example I only have one column with KM for each ID and it calculates Km kørt since previous ID
Avatar billede Klodshans Juniormester
26. december 2016 - 20:25 #4
Hej.
Tak for svaret. Men jeg får en fejl: Syntaks til underforespørgsel er forkert. Kontroller syntaksen og omslut underforespørgsler med paranteser. men jeg kan ikke lige se hvor den mangler.
Avatar billede Klodshans Juniormester
26. december 2016 - 20:34 #5
Hvis ikke id rækkefølgen passer, som den måske ikke altid gør, er det så den korrekte SQL?
Avatar billede terry Ekspert
27. december 2016 - 10:23 #6
"er det så den korrekte SQL? "
My SQL or your SQL?

That all depends on what you want, so if you give an example of your data and of what you expect in result it will be easier to say.

I'm guessing that you are actually inserting Dieselforbrug.[Km kørt] so no need to calculate it.

So

SELECT DF.ID, DF.Dato, DF.KM, (SELECT  max(KM) from dieselforbrug where dieselforbrug.ID < DF.ID) AS [Previous KM]
FROM Dieselforbrug AS DF

will probably give the result I think you are trying to get from your sql
Avatar billede terry Ekspert
27. december 2016 - 15:36 #7
In the sql I gave first

"SELECT DF.ID, DF.KM, [KM]-(SELECT  max(KM) from dieselforbrug where dieselforbrug.ID < DF.ID) AS [KM Kørt]
FROM Dieselforbrug AS DF"

I have a table named dieselforbrug with two fields only. ID and KM and it works here, so I assume your sql is wrong
Avatar billede terry Ekspert
27. december 2016 - 15:40 #8
you are also welcome to send an example of the dB and I'll take a look
ekspertenATsanthell.dk

AT = @
Avatar billede Klodshans Juniormester
27. december 2016 - 15:55 #9
Hej igen.Tak for svaret.
Ja det er korrekt, jeg indsætter sql'en i næste ledige kolonne i forespørgslen i første felt. der er følgende kolloner: id, Dato, KM, og endelig den tomme kolonne hvor jeg sætter sql'en ind. Den bør vel starte med:
Kørt KM: SELECT DF.ID, DF.Dato, DF.KM, (SELECT  max(KM) from dieselforbrug where dieselforbrug.ID < DF.ID) AS [Previous KM]
FROM Dieselforbrug AS DF

Men når jeg sætter sql ind får jeg stadig fejlen: Syntaksen til underforespørgsel er forkert. Kontroller syntaksen og omslut underforespørgsler med paranteser.
Avatar billede terry Ekspert
27. december 2016 - 16:09 #10
:-)

OK, the sql is NOT for a single column but to replace the sql in your query.

If you are trying to calculate "Kørt KM" then use the first sql I gave, it has to replace you sql not just in one column.
Avatar billede Klodshans Juniormester
27. december 2016 - 16:12 #11
Jeg har sendt dig DB. er det ud fra den du giver svaret?
Avatar billede terry Ekspert
27. december 2016 - 16:18 #12
"er det ud fra den du giver svaret? "?

Har modtaget dB...
Avatar billede terry Ekspert
27. december 2016 - 16:40 #13
I have sent dB to you, hope its what you are after.
Avatar billede terry Ekspert
03. januar 2017 - 09:19 #14
Thanks. I have placed a comment in your new question.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester