datum in access invoeren middels sql opdracht in vba

Status
Niet open voor verdere reacties.

rts67

Nieuwe gebruiker
Lid geworden
6 jan 2013
Berichten
4
hallo,

Ik ben bezig in Access om middels vba een SQL INSERT opdracht te geven.
Lukt alleen niet bij de datum. Als ik de accesstabel opvraag, wordt er een verkeerde datum/getal gegeven.

Gaat om onderstaand code:

strDatumUIT = Format(Date, "dd-mm-yy")

strINSERTtblLinkUIT = "INSERT INTO tblLINK (werknemerid, sleutelid, datum) VALUES (" & intWerknemersid & "," & intSleutelid & ", " & strDatumUIT & "));"

DoCmd.RunSQL strINSERTtblLinkUIT

Kan iemand mij vertellen wat ik fout doe?

Groet,
Richard.
 
Nou, wat jij fout doet valt wel mee. Eigenlijk niks namelijk, al geef je wel de verkeerde format mee. Access werkt, als je zelf queries etc. maakt en gebruikt, met Nederlandse instellingen (als je dat tenminste hebt ingesteld) maar VBA werkt altijd met Amerikaanse notatie. Ergo: wat jij intypt als "7-2-2016" is voor VBA niet 7 februari, maar 2 juli. En dat is toch een andere datum.... Je zult dus de query een universele datum mee moeten geven die beide varianten snappen. Daarom vertaal ik een datum altijd naar een getal, want dat is altijd hetzelfde, ongeacht het land. Je krijgt dan (netjes opgemaakt met de CODE tags ;) ) dit:
Code:
    strINSERTtblLinkUIT = "INSERT INTO tblLINK (werknemerid, sleutelid, datum)" _
        & "VALUES (" & intWerknemersid & "," & intSleutelid & ", CDate(" & CDbl(Date) & "));"
    currentdb.Execute strINSERTtblLinkUIT, dbFailOnError
 
Hartstikke bedankt. Het werkt!
Nu probeer ik zoiets ook met de actuele tijd te doen. Zie onderstaande code:
Ik denk dan heel simpel date veranderen in time en dan klaar, maar krijg dan een foutmelding.

Fout 3346: Het aantal querywaarden en doelvelden komen niet overeen met elkaar!

Het gaat om onderstaand code.

strDatumUIT = CDate(CDbl(Date))
strTijdUIT = CDate(CDbl(Time))

strINSERTtblLinkUIT = "INSERT INTO tblLINK (werknemerid, sleutelid, datumuit, tijduit) VALUES (" & intWerknemersid & "," & intSleutelid & "," & strDatumUIT & "," & strTijdUIT & ");"

DoCmd.RunSQL strINSERTtblLinkUIT

Wie weet raad?
 
De reden dat je datums moet aanpakken is simpel: Amerikanen draaien maand en dag om. Bij mijn weten doen ze dat niet met tijd :). Tijd, kortom, kun je gewoon met Now vullen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan