2017-02-08 1 views
0

ich halten über "Laufzeitfehler 3464 mit meinem Skript kommt unten:Laufzeitfehler 3464

Private Sub ApproveTDS_Click() 
    DoCmd.SetWarnings False 
    Dim usr As String 

    usr = DLookup("UserID", "tt_CurrentUser") 
    DoCmd.RunSQL "UPDATE Table1 SET Table1.Date = Date(), Table1.ApprovedBy = '"& usr & "' WHERE Table1.Job = '" & Me!txtJobLU & "' And Table1.SN = '" & Me!txtJobSN & "'" 
    Me.Refresh 
    DoCmd.SetWarnings True 
End Sub 

usr = varchar(255) 
Table1.Date = Date 
Table1.ApprovedBy = varchar(255) 
Table1.Job = int 
Table1.SN = varchar(50) 

Irgendwelche Vorschläge?

Danke, Adam

+0

Vorschläge? Sicher: Formatieren Sie Ihren Code als Code, damit Ihre Frage lesbar ist. (Setzen Sie 4 Leerzeichen vor jeder Zeile.) Google den Fehlercode; Wenn die Ergebnisse Ihre Frage nicht beantworten, können Sie statt eines Codes, den 99% von uns noch nicht auswendig gelernt haben, einen sinnvollen Fehler posten. –

+0

Entschuldigung ... Ich bin neu in diesem Bereich. Hast du das gemeint? –

+0

können Sie Tabellenschema teilen Ich habe den Verdacht, dass ein nicht übereinstimmender Datentyp vorhanden ist oder DATE() das richtige Format nicht zurückgibt. –

Antwort

0

WHERE Table1.Job = '" & Me!txtJobLU & "'

Wenn Job ein int ist, dann ist es in Anführungszeichen Verpackung wird nicht funktionieren - SQL Server denkt Dinge in Anführungszeichen Strings sind. Zeichenfolgen sind keine Zeichen, daher erhalten Sie einen Datentyp, der nicht übereinstimmt. Entfernen Sie die einfachen Anführungszeichen, um dieses Problem zu beheben.

Besser noch, in Zukunft lernen, parametrisierte Abfragen zu verwenden - dieser Code ist anfällig für SQL-Injection-Angriffe.

+0

Es hat funktioniert! Vielen Dank –