String omzetten naar datum in access 2010 met vba

Status
Niet open voor verdere reacties.

thirty

Nieuwe gebruiker
Lid geworden
30 jul 2013
Berichten
3
Beste

Volgende sql opdracht wens ik in vba code te plaatsen. De sql code werkt in het sql venster van access 2010.

Code:
 SELECT tblWerknemers.Werknemernr, tblAanwezig.Datum, tblAanwezig.VM, tblAanwezig.NM
FROM tblWerknemers INNER JOIN tblAanwezig ON tblWerknemers.Werknemernr = tblAanwezig.Werknemernr
WHERE (((tblWerknemers.Werknemernr)=[Formulieren]![Test]![txtNummer]) AND ((tblAanwezig.Datum)=[Formulieren]![Test]![txtIngavedatum]));

De volgende vba code werkt niet.

Code:
 strMysql1 = "SELECT tblWerknemers.Werknemernr, tblAanwezig.Datum, tblAanwezig.VM, tblAanwezig.NM " & _
"FROM tblWerknemers INNER JOIN tblAanwezig ON tblWerknemers.Werknemernr = tblAanwezig.Werknemernr " & _
"WHERE (((tblWerknemers.Werknemernr)=" & [Forms]![Test]![txtnummer] & ") AND ((tblAanwezig.Datum)=" & [Forms]![Test]![txtIngavedatum] & "))"

Het probleem bevindt zich in het laatste gedeelte van de code: [Forms]![Test]![txtIngavedatum]. Hier geef ik een datum in in een tekstveld in de vorm van dag-maand-jaar of 27-5-2013.
Ik las op het internet dat access intern werkt met de Amerikaanse notatie en dat hierdoor verschillende problemen ontstaan. Is dit zo een probleem of heb ik het verkeerd voor?
Wat doe ik verkeerd?
 
De code doet het of hij doet het niet. Als je 6-7-2013 invoert krijg je ofwel de juiste datum (6 juli) of de verkeerde datum (7 juni) maar je krijgt een datum. Overigens zou ik er in ieder geval het datumteken omheen zetten:
Code:
AND (tblAanwezig.Datum=#" & Me.txtIngavedatum & "#)"
Dan krijg je (meestal) de juiste datum, maar vaak niet.
Dit werkt beter:
Code:
Const strcJetDate = "\#mm\/dd\/yyyy\#"  'Do NOT change it to match your local settings.
AND (tblAanwezig.Datum=#" & Format(Me.txtIngavedatum, strcJetDate) & ")"
Ik ga er in de aanpassing vanuit dat je de code vanaf een formulier afschiet waar het tekstveld op staat. Is ook logisch. Maar staat het tekstveld op een ander formulier, dan moet je jouw notatie gebruiken.
 
Beste OctaFish ,

Bedankt voor de snelle respons.
De hekjes doen het werken.

Volgende code heb ik aangepast.
Code:
 strMysql1 = "SELECT tblWerknemers.Werknemernr, tblAanwezig.Datum, tblAanwezig.VM, tblAanwezig.NM " & _
"FROM tblWerknemers INNER JOIN tblAanwezig ON tblWerknemers.Werknemernr = tblAanwezig.Werknemernr " & _
"WHERE (((tblWerknemers.Werknemernr)=" & [Forms]![Test]![txtnummer] & ") AND ((tblAanwezig.Datum)=#" & [Forms]![Test]![txtIngavedatum] & "#))"

Bovenstaande code werkt.
 
Check wat datums, want je loopt een goede kans dat ze verkeerd in de tabel terecht komen. Daarom raad ik het gebruik van de hekjes ten sterkste af, en beveel ik de methode met de Format string ten sterkste aan. En gebruik simpelere code, zoals Me. als je op een formulier zit. Zodra je het formulier een andere naam geeft (en wie doet dat niet met een formulier dat je eerst Test noemt?) kun je al je code aanpassen. En daar zit je (neem ik aan) ook niet op te wachten....
 
Beste OctaFish,

Ik heb je raad opgevolgd en gebruik nu de Format functie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan