VBA Append query geeft fout bij datum veld

Status
Niet open voor verdere reacties.

obiku

Gebruiker
Lid geworden
25 jul 2004
Berichten
60
All,

Ik ben lekker bezig met een database voor mijn werk. Omdat ik wil weten wie wat wanneer doet, en om eventuele fouten te kunnen tekkelen heb ik een simpele log routeine geschreven zie onder:
Code:
Public Sub LogSystem(strUserId As String, strType As String, strMessage As String, Optional strSubFunc As String, Optional strForm As String)
On Error GoTo Err_SomeName
Dim strSQL As String

    strSQL = "INSERT INTO tblLogUsage ( UserID, Date_time, Message_type, Message, Sub_Func, Form ) " & _
             "SELECT DISTINCTROW " & strUserId & " AS UserID, " & _
                                 Now() & " AS Date_time, " & _
                                 strType & " AS Message_type, " & _
                                 strMessage & " AS Message, " & _
                                 strSubFunc & " as Sub_Func, " & _
                                 strForm & " AS Form;"
    DoCmd.RunSQL strSQL
Exit_SomeName:                          ' Label to resume after error.
    Exit Sub                            ' Exit before error handler.
Err_SomeName:                           ' Label to jump to on error.
    MsgBox err.Number & err.Description ' Place error handling here.
    Resume Exit_SomeName                ' Pick up again and quit.

End Sub

Ik krijg alleen iedere keer als ik deze routine aanroep een foutmelding:
3075Syntaxisfout (operator ontbreekt) in query-expressie ..... (Er volgt dan een datum en een tijd) Die datum en tijd wordt gecreeerd door de Now()
Deze query heb ik grafisch opgezet in access, en daarna heb ik de SQL gebruikt in mijn code. Het rare is dat de query zelf wel werk, maar vanuit de code niet. Ik zal wel ergens over heen kijken, maar ik zie het niet meer.
Als iemand mij kan helpen, dan ben ik zeer blij.

Groeten,
Mike
 
Laatst bewerkt:
Is dit te simpel gedacht ?

Code:
strSQL = "INSERT INTO tblLogUsage ( UserID, Date_time, Message_type, Message, Sub_Func, Form ) " & _
             "VALUES(" & strUserId & ", " & Now() & ", " & strType & ", " & strMessage & " , " & _
               strSubFunc & " , " &  strForm & ");"

Probeer anders eens
Code:
MSGBOX(strSQL)
boven de runsql te zetten, dan kan je zien of de sql instructie er uit ziet zoals je verwacht.

Succes.
 
Ik had idd een msgbox gebruikt om mijn query te bekijken, en die zag er uit zoals hij bedoeld was.

Na lang klooien heb ik de hele query maar eens op 1 regel gezet. Wonderbaarlijk ging hij toen een stuk verder. Ware het niet dat ik toen Prompt boksjes kreeg waar ik mijn variabelen een waarde moest geven. Na nog meer zoeken kwam ik er achter dat de variabelen die ik gebruikte niet tussen " tekens stonden, waarna ik dus voor en achter iedere variabele een chr(13) geplaatst heb.

Finally ik had het resultaat wat ik nodig had.

Deze kan dus gesloten worden.
Thanx voor de reactie
 
Het sluiten moet je zelf doen, want dat kan alleen de TS.
Het op één regel plaatsen zou overigens helemaal niks uit moeten maken, tenzij je een Regeleinde teken op de verkeerde plaats hebt gezet.
Bij een Isert query moet je rekening houden met onderscheid tussen datums, getallen en tekst. Ik vermoed dat je verschillende veldtypen hebt gebruikt, waaronder tekstvelden. Die kun je ook zo in je query zetten:

Code:
strSQL = "INSERT INTO tblLogUsage ( UserID, Date_time, Message_type, Message, Sub_Func, Form ) " & _
             "VALUES(" & strUserId & ", " & Now() & ", [COLOR="red"][B]'[/B][/COLOR]" & strType & "[COLOR="red"][B]'[/B][/COLOR], [COLOR="red"][B]'[/B][/COLOR]" & strMessage & "[COLOR="red"][B]'[/B][/COLOR], [COLOR="red"][B]'[/B][/COLOR]" & _
               strSubFunc & "[COLOR="red"][B]'[/B][/COLOR],[COLOR="red"][B]'[/B][/COLOR]" &  strForm & "[COLOR="red"][B]'[/B][/COLOR]);"
Dat scheelt je een hoop chr(13) codes...
 
Laatst bewerkt:
OK, dat is dus het zelfde als met MySQL code in php, daar kan je ook " vervangen voor ' in een string.
Ga er mee aan de slag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan