Date in MYSQL string in vba

Status
Niet open voor verdere reacties.

harolda1980

Gebruiker
Lid geworden
7 aug 2007
Berichten
488
Ik probeer in deze Sql string een datum neer te zetten maar op een of andere manier krijg ik dat niet voorelkaar.
Heeft iemand een idee?

De datum komt dus niet in de string te staan. Terwijl de string het wel doet als ik hem opbouw in mijn sql editor.

Code:
Private Sub cmdNart_Click()
Dim DT, 
Dim datestring As Date
Dim rstpl As ADODB.Recordset
Dim stringsql As String

DT = InputBox("Voer de datum in vanaf wanneer de controle dient te gebeuren!" & vbNewLine & "Voer de datum in als 2012-01-01", "Nieuwe artikelen controle - INSTAT 2012", 0)
Set rstpl = New ADODB.Recordset

stringsql = "SELECT tblart.A_nr, tblart.aid, tblart.A_naam, tblart.A_dtc, tblafname.AF_af, tblafname.AF_week, tblafname.AF_jaar, tblafname.AID FROM tblart INNER JOIN tblafname ON tblart.aid = tblafname.AID WHERE tblart.A_dtc >  '& DT &'  AND tblafname.AF_jaar = # & year(now) & #  AND tblafname.AF_af > 4 Group BY tblart.aid, tblafname.AID;"
rstpl.Open CNNAPP, adOpenDynamic, adLockOptimistic
Do While Not rstpl.EOF
     'code om de gegevens te verwerken volgt
     rstpl.MoveNext
Loop
rstpl.Close
set rstpl = nothing

End Sub
 
Wat me opvalt is dat je je Inputbox een ongebruikelijke notatie als vraagt, en dat je de datum in de WHERE als tekst behandelt.
"Voer de datum in als 2012-01-01",
WHERE tblart.A_dtc > '& DT &' AND
Dan zou je veld [tblart.A_dtc] ook een tekstveld moeten zijn. Overigens zou je SQL string die tekst wel moeten laten zien, want aan de syntax zie ik verder niks verkeerds.
Maar > op een tekstveld? Erg tricky, lijkt mij.... Ik zou er zelf voor kiezen om de datum als datum te behandelen.
 
Ja ik dacht dat is dan in de zelfde volgorde als de sql editor het aangeeft. maar ook als ik dit verander in een datum pakt hij hem niet op.
Het veld A_Dtc is een echt datum veld in de database!

Hoe zou ik het dan moeten aanpassen volgens jou?
 
Klopt hij staat er nu in alleen is volgens mij hij niet correct qua indeling voor Mysql

MYSQL YYYYMMDD
VBA DDMMYYYY

Hoe zorg ik dat deze ook omgezet word?
 
Bijgaand de foutmeling die ik krijg!
 

Bijlagen

  • Foutmelding2.jpg
    Foutmelding2.jpg
    36,2 KB · Weergaven: 15
Hierbij de code weer een stapje verder. Helaas nog wel met de foutmelding!

Code:
Private Sub cmdNart_Click()
Dim DT, i, jaartal1
Dim datestring
Dim rstpl As ADODB.Recordset
Dim stringsql As String
i = 0
jaartal1 = Year(Now)
DT = InputBox("Voer de datum in vanaf wanneer de controle dient te gebeuren!" & vbNewLine & "Voer de datum in als 2012-01-01", "Nieuwe artikelen controle - INSTAT 2012", 0)
Set rstpl = New ADODB.Recordset
datestring = DT

datestring = Format(DT, "YYYY-MM-DD")
stringsql = "SELECT tblart.A_nr, tblart.aid, tblart.A_naam, tblart.A_dtc, tblafname.AF_af, tblafname.AF_week, tblafname.AF_jaar, tblafname.AID FROM tblart INNER JOIN tblafname ON tblart.aid = tblafname.AID WHERE tblart.A_dtc > " & datestring & " AND tblafname.AF_jaar = " & jaartal1 & " AND tblafname.AF_af > 4 Group BY tblart.aid, tblafname.AID;"
Debug.Print stringsql
MsgBox stringsql
rstpl.Open CNNAPP, adOpenDynamic, adLockOptimistic
Do While Not rstpl.EOF
i = i + 1
rstpl.MoveNext
Loop
rstpl.Close

End Sub
 
je gebruikt wel erg veel stappen om een datum in de SQL-tekstreeks te krijgen

?

Code:
stringsql = "SELECT tblart.A_nr, tblart.aid, tblart.A_naam, tblart.A_dtc, tblafname.AF_af, tblafname.AF_week, tblafname.AF_jaar, tblafname.AID FROM tblart INNER JOIN tblafname ON tblart.aid = tblafname.AID WHERE tblart.A_dtc > " & format(DT,"'yyyy/mm/dd'") " AND tblafname.AF_jaar =" & format(date,",yyyy'") & " AND tblafname.AF_af > 4 Group BY tblart.aid, tblafname.AID;"
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan