amerikaanse datum vs europees

Status
Niet open voor verdere reacties.

jwaque

Verenigingslid
Lid geworden
16 aug 2006
Berichten
443
Ik heb onderstaande code in gebruik. Me.txtstopdatum wordt op een start formulier in gegegen.
De code werkte tot vanochtend prima. echter vandaag niet meer.

Nu heb ik naar de weggeschreven data gekeken en die loopt maar tot 6-2-2016 ipv 2-6-2016. Ik kan alleen niet vinden waar access de datum van europees naar amerikaans leest.

Als ik mijn me.txtstopdatum op middellang zet staat er heel duidelijk 2-juni-2016
Als ik mbv een msgbox de maand opvraag van me.txtstopdatum krijg ik ook 6 terug.
Als ik de stop datum zet op 14-6-2016 gaat het ook weer prima.

Iemand een idee waar dit mis gaat. Ik heb ook geprobeert de # weg te halen maar dat geeft een error.


Code:
'een record set maken met een jaar aan data
'gemiddelde hiermee berekenen
'wegschrijven
'dat jaar-1 gebruiken en herhalen
DoCmd.SetWarnings False

Dim Nu As Date
Dim VorigJaar As Date

Nu = Me.TxtStopDatum
VorigJaar = DateAdd("yyyy", -1, Nu)

DoCmd.RunSQL "delete TblLopendGemiddelde.* from TblLopendGemiddelde"
i = 0
Do Until i = 12


DoCmd.RunSQL "delete tbltijdelijklopendgem.* from tbltijdelijkLopendGem"
DoCmd.RunSQL "SELECT data.logboekziekenhuiscode, data.datum, data.Locatie, data.[Soort monster], data.ResultaatGebruiken, data.uitslag INTO TblTijdelijkLopendGem FROM Data WHERE (((data.datum)>#" & VorigJaar & "# And (data.datum)<#" & Nu & "#) AND ((data.ResultaatGebruiken)='ja' Or (data.ResultaatGebruiken) Is Null));"
'DoCmd.RunSQL "INSERT INTO TblLopendGemiddelde (logboekziekenhuiscode, MaxVandatum, Locatie, [Soort monster], GemVanuitslag )SELECT Max(TblTijdelijkLopendGem.datum) AS MaxVandatum, TblTijdelijkLopendGem.ziekenhuiscode, TblTijdelijkLopendGem.Locatie, TblTijdelijkLopendGem.[Soort monster], TblTijdelijkLopendGem.logboekziekenhuiscode, Avg(TblTijdelijkLopendGem.uitslag) AS GemVanuitslag FROM TblTijdelijkLopendGem GROUP BY tbltijdelijkLopendGem.LogboekZiekenhuiscode, TblTijdelijkLopendGem.Locatie, TblTijdelijkLopendGem.[Soort monster];"
DoCmd.RunSQL "INSERT INTO TblLopendGemiddelde ( LogboekZiekenhuiscode, Locatie, [Soort monster], MaxVandatum, GemVanuitslag ) SELECT TblTijdelijkLopendGem.LogboekZiekenhuiscode, TblTijdelijkLopendGem.Locatie, TblTijdelijkLopendGem.[Soort monster], Max(TblTijdelijkLopendGem.datum) AS MaxVandatum, Avg(TblTijdelijkLopendGem.uitslag) AS GemVanuitslag FROM TblTijdelijkLopendGem GROUP BY TblTijdelijkLopendGem.LogboekZiekenhuiscode, TblTijdelijkLopendGem.Locatie, TblTijdelijkLopendGem.[Soort monster];"
i = i + 1
Nu = DateAdd("m", -1, Nu)
VorigJaar = DateAdd("m", -1, VorigJaar)

Loop
 
ik denk dat ik iets moet met CDate en Cdbl maar ik krijg het nog niet werkend.

Code:
DoCmd.RunSQL "SELECT data.logboekziekenhuiscode, data.datum, data.Locatie, data.[Soort monster], data.ResultaatGebruiken, data.uitslag INTO TblTijdelijkLopendGem FROM Data WHERE ((data.datum>=(# CDate(" & CDbl(VorigJaar) & ") #) And (data.datum)<=(# CDate(" & CDbl(Nu) & ")#)) AND ((data.ResultaatGebruiken)='ja' Or (data.ResultaatGebruiken) Is Null));"
 
Nog even afgezien van de lelijke opmaak van je code (en query; maar daar mogen we Microsof voor bedanken vermoed ik) maak je een denkfout. Ofwel je hanteert een datumopmaak in je code (die dus een foute datum oplevert) en dan gebruik je het hekje (#), ofwel je converteert de datum in de VBA naar een getal en converteert hem in de query terug naar een datum (correcte datum). In het laatste geval gebruik je geen hekje, want je werkt niet met een datum!
Code:
        DoCmd.RunSQL "SELECT logboekziekenhuiscode, datum, Locatie, [Soort monster], ResultaatGebruiken, uitslag " _
            & "INTO TblTijdelijkLopendGem FROM Data WHERE (datum >= CDate(" & CDbl(VorigJaar) & ") And datum <= CDate(" & CDbl(Nu) & ")) " _
            & "AND (ResultaatGebruiken='ja' Or ResultaatGebruiken Is Null);"
 
Octafish weer bedankt. Hoewel niet direct is het nu wel opgelost. De functie CDbl werkt met hele getallen en in mijn datum staat ook een tijd waardoor er decimalen komen. Ik heb nu round toegevoegd en een werkende code.
Round(CDbl(Nu).

twijfel of ik niet beter de datum kan formateren naar datum ipv datum-tijd
 
Laatst bewerkt:
Als je Date() gebuikt i.p.v. Now() heb je dat probleem niet. Gebruik Now() alleen als je ook een tijd nodig hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan