Query op tijdveld geeft problemen.

Status
Niet open voor verdere reacties.

leocod

Gebruiker
Lid geworden
14 jan 2012
Berichten
32
Beste mensen,

Ik heb in een tabel een veld "Datum" as date(Bevat de Datum) en een veld "Tijdstip" as date(Bevat alleen de Tijd)
Op een gegeven moment heb ik op één Datum meerdere Tijdstippen. t.w. #14:27:00# en #17:24:00#
Een query met:
Tijdstip = #12/30/1899 17:24:00# geeft netjes de records met tijdstip #17:24:00#
Tijdstip < #12/30/1899 17:24:00# geeft de records met tijdstip "#14:27:00#

Het probleem is dat als ik Tijdstip = #12/30/1899 14:27:00# gebruik geen resultaten worden weergegeven

Is er iemand die weet waarom dit gebeurt.

Voor de duidelijkheid heb ik een document met de originele sql-text en de resultaten bijgevoegd.
Bekijk bijlage Query Met Tijdveld in access.docx
 
Leuk Word documentje, maar daar kunnen we de situatie uiteraard niet mee nabootsen. En ik ga geen tabellen overtypen op deze mooie dag :). Liever dus een Access voorbeeldje erbij.
 
Query op tijdveld geeft problemen

@ Octafish
Je weet het dus ook niet.
 
Je weet het dus ook niet.
Hoe kom je dáár nu weer bij?. Ik denk dat ik het wel weet, heb vast dus ook een oplossing, maar geen zin in nodeloos typwerk :)
 
Query op Tijdveld geeft problemen

@Octafish

Ik dacht dat mijn vraagstelling 100% duidelijk was.
Dus als je denkt het antwoord te weten waarom wil je dan eerst nog trials uitvoeren.
Zeg gewoon wat je denkt!
 
Dat heeft niet zoveel zin; ik moet de data zien om te beoordelen wat er fout gaat.
 
Ik kan op het werk geen rar openen, maar als je een zip kunt posten, kan ik er straks wel even naar kijken. Andersa wordt het vanavond.
 
En hier een (de?) oplossing :).
Code:
SELECT GekochtBij, Datum, TimeValue([Tijdstip]) AS Tijd, Productnaam
FROM tblProductInfo_Test INNER JOIN tblInkopen_Test ON tblProductInfo_Test.Id = tblInkopen_Test.ProductNaam
WHERE ([GekochtBij] = 22 AND [Datum] = DateSerial(2016,10,1) AND [Tijdstip] = TimeSerial(16,43,0));
Zoals je ziet filter ik nooit met hekjes; om te beginnen dus vanwege de verschillen tussen de Amerikaanse en Europese datumnotatie (wat denk ik ten grondslag ligt aan je probleem). Waar je hier (qua datum) overigens niet zoveel last van hebt, omdat je in het ontwerpvenster gewoon een Nederlandse datum kan typen (die in de SQL dan Amerikaans wordt weergegeven). Maar blijkbaar wordt de tijd dus niet correct vertaald, vandaar dat ik op het veld Tijdstip eerst de functie TimeValue loslaat. Daarna kun je dus filteren zoals ik doe, maar jouw filter (#16:43:00#) werkt dan ook.
 
Als ik in de WHERE clause :

Code:
WHERE ([GekochtBij] = 22 AND [Datum] = DateSerial(2016,10,1) AND [Tijdstip] = TimeSerial(16,43,0));

Code:
[Tijdstip] = TimeSerial(16,43,0)
vervang door

Code:
 TimeValue([Tijdstip]) = Timeserial(16;43;0)
werkt het perfect.

Maar toch blijf ik het vreemd vinden dat op het moment dat een datum meerdere tijdstippen bevat je alleen de hoogste waarde met de operator = kunt verkrijgen en niet de lagere waarde. Ik heb het op meerdere datums geprobeerd, het is altijd de laagste waarde die niet wil. Het zal wel Access eigen zijn.

Bedankt voor je medewerking.:D
 
Je hebt blijkbaar de komma en puntkomma notatie andersom staan :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan