ritafstanden halen uit oplopende kilometerstand

Status
Niet open voor verdere reacties.

nicolassoenens

Gebruiker
Lid geworden
9 okt 2011
Berichten
61
Beste
wij hebben verschillende voertuigen waarvan de kilometerstand na elke rit wordt doorgegeven aan een centrale.
Ik zou graag bij het invullen van de kilometerstand een berekening kunnen maken waardoor ik automatisch de laatste ritafstand kan afleiden.

Zou dit mogelijk zijn?

Alvast bedankt

Nicolas
 
nothing is impossible, the word itself sais I'm possible...
ja dan kan, maar wil je nu een programma voor de pc hebben of een sensor of een communicatie systeem, het kan sowieso allemaal.
het lijkt erop dat je de software access bedoelt...
 
Laatst bewerkt:
De vraag staat in een Access forum, dus dat laatste lijkt mij duidelijk ;)
Je kunt het oplossen met een query waarin je een extra veld maakt. Ik heb een voorbeeldje op basis van Meterstanden, dat je denk ik wel kunt omzetten naar kilometers.

Code:
SELECT Datum, (SELECT TOP 1 Water FROM Meterstanden AS T1 WHERE T1.Datum < Meterstanden.Datum  ORDER BY T1.Datum DESC ) AS VorigWater, 
     Water, IIf([VorigWater] Is Null,0,[water]-[VorigWater]) AS [Verbruik Water]
FROM Meterstanden
GROUP BY Datum, Water
ORDER BY Datum;
 
nog een foutje

Beste,
Alvast bedankt. “TOP” kende ik niet maar ben er nog niet
ik heb geprobeerd om telkens te vorige kilometerstand per voertuig de verkrijgen maar het lukt mij niet.

VRAAG:

Selecteer de eerste record van [Qry Voertuig kilometers] als T1
waarbij
Kilometers van T1 kleiner is dan kilometers van [Qry Voertuig kilometers] aflopend gesorteerd
En waarbij
de ID voertuig van T1 = ID voertuig van [Qry Voertuig kilometers]
Deze kolom krijgt naam vorige kilometers

MIJN VERKEERDE FORMULE:

(SELECT TOP 1 kilometers FROM ([Qry voertuig kilometers volgens kilometers] AS T1 WHERE T1.kilometers<kilometers Order BY T1 kilometers DESC AND WHERE T1.voertuig ID= voertuig ID) AS [vorige kilometers]


Het onderste lukt wel. Daarmee heb ik gewoon de grootste kilometerstand zonder rekening te houden met ID voertuig. Mijn fout ligt dus verder.

(SELECT TOP 1 kilometers FROM ([Qry voertuig kilometers volgens kilometers] AS T1 WHERE T1.kilometers=kilometers ORDER BY kilometers DESC) AS [vorige kilometers]


nicolas
 
Laatst bewerkt:
Post de volledige code van je query, want zo kan ik er weinig van zeggen.
 
SELECT [Qry voertuig kilometers volgens kilometers].[Id voertuig kilometers], [Qry voertuig kilometers volgens kilometers].[voertuig ID], [Qry voertuig kilometers volgens kilometers].[datum], [Qry voertuig kilometers volgens kilometers].[uur], [Qry voertuig kilometers volgens kilometers].[kilometers], (SELECT TOP 1 kilometers FROM [Qry voertuig kilometers volgens kilometers] AS T1 WHERE T1.kilometers<kilometers ORDER BY T1.kilometers DESC) AS [vorige kilometers], IIf([kilometers] Is Null,0,[kilometers]-[vorige kilometers]) AS [Rit]
FROM [Qry voertuig kilometers volgens kilometers];

Dit is het. (maar daarmee is er nog geen filter op Voertuig ID)
Ik heb gerangschikt op kilometers want die gaan toch altijd naar boven en die T1 rangschikken op datum en uur vond ik al wat moeilijker.
 
Je kunt een vorige waarde alleen opzoeken als je een vergelijking maakt op basis van een uniek veld. T1.kilometers<kilometers is dat zeker niet, tenzij je maar één record hebt. Een (autonummer) ID veld kan wel, en een datum meestal ook wel. In mijn voorbeeld van de meterstanden wordt maar één keer per dag een meting gedaan, dus de datums zijn uniek in de tabel.
Je zult de TOP 1 dus moeten baseren op een bruikbaar veld.
 
De oplossing zou dan zijn om de datum op te tellen met de uren ->zo heb ik ook mijn uniek veld. Zou dit mogelijk zijjn?
 
Probeer het eens uit, zou ik zeggen :)
Of maak een voorbeeldje in 2003 format, dan wil ik ook wel even kijken.
 
Het lukt met tijd: [datum]+[uur]
Dit is weer een stap dichter.

Het probleem voor het voertuig is nog niet OK.

Als ik in de gerelateerde query bij [voertuig ID] een filter invoer [geef het nummer in] lukt dit wel maar het is niet gebruiksvriendelijk om telkens het nummer in te geven.

Enig idee hoe ik dit kan oplossen? Ik zoek ook verder

Zou ik bij een WHERE twee voorwaarden kunnen geven?
- (tijd van T1) is kleiner dan tijd + (ID voertuig van T1) moet gelijk zijn aan ID voertuig
Hoe zou dit moeten geformuleerd worden?
 
Laatst bewerkt:
Gelukt:

de eerste query in een formuliertje geplaatst en de 2de gerelateerde query via [voertuig ID] in een subformuliertje waardoor de filter voordien gebeurt.
enkel nog wat aanpassingen.

Bedankt voor het helpen!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan