datumprobleem in access - soms europees, soms amerikaanse notatie

Status
Niet open voor verdere reacties.

jansseba

Nieuwe gebruiker
Lid geworden
13 sep 2011
Berichten
2
Ik wil een datumveld van een invulformulier overzetten naar een tabel. Ik gebruik daar volgende code voor:

Code:
 varDate = Me.Aanvraagdatum
    strSQL = "INSERT INTO Brieven (BriefDatum) SELECT #" & varDate & "#"
    DoCmd.RunSQL strSQL
(met de nodige setwarnings aanpassingen errond)

Dit doet hij perfect als de datum bijvoorbeeld 14 september 2011 is, maar als de datum 10 september 2011 is, maakt hij er 9 oktober 2011 van. Hoe krijg ik dat opgelost?
 
Laatst bewerkt door een moderator:
Visual Basic is iets anders dan VBA, topic verplaatst.
 
Bij deze ;)

Zoals je al gemerkt hebt, krijg je verkeerde datums in je tabel bij sommige datums. De oorzaak is simpel: VBA hanteert de amerikaanse datumnotatie. Bij datums waarbij de dag > 12 gaat dat nog wel, omdat de pc dan blijkbaar zelf ook bedenkt dat er (in jouw voorbeeld van 14-09-2011) geen 14 maanden zijn. Maar 10-9-2009 wordt inderdaad als de 9e dag van de 10e maand gezien. Er zijn twee oplossingen: één met een Format commando, en één met een conversiecommando.

Variant 1:
Maak een constanste variabele met een opmaakstring, en gebruik die in de SQL. Dat ziet er zo uit:

Code:
Const conJetDate = "\#mm\/dd\/yyyy\#"
strSQL = "INSERT INTO Brieven (BriefDatum) VALUES (" & Format(VarDate, conJetDate) & ")"

Variant 2:
Hierbij wordt de datum geconverteert naar een getal, en in de SQL weer teruggezet naar een datum. Als volgt:

Code:
strSQL = "INSERT INTO Brieven (BriefDatum) VALUES (CDate(CDbl(" & VarDate & ")))"

Pick one...
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan