sql UPDATE mit Variablen access-vba
Ich versuche zur Aktualisierung einer Tabelle in Access-VBA und es hält, versagt, so dass ich wirklich hoffe, einer von Euch kann helfen.
Im Grunde möchte ich auf Tabelle aktualisieren tblLog, das Feld LogOut mit der variable logOutTime, wo LogID ist gleich LogID von der aktuellen form.
Den ersten gab Fehler "3075"
Dim mySQL As String Dim logOutTime As String logOutTime = Jetzt() mySQL = "UPDATE [tblLog] SET [LogUd]=" & logOutTime & ", WOBEI " [Logid] =" & Mich.LogID & "" DoCmd.RunSQL mySQL
und der zweite gab mir Fehler "3464"
DoCmd.RunSQL ("UPDATE tblLog " _
& "SET LogUD='" & logOutTime & "' " _
& "WHERE (((LogID)='" & Me.LogID & "'))")
Hoffe, Sie können helfen, nicht nur zu verstehen, wenn man das " oder ".
/Camilla
- Wichtig zu erinnern ist, dass, wenn mit einem numerischen Wert, wie eine ID, die entweder in der WHERE-Klausel oder die SET-Klausel, werden Sie nie brauchen, um verwendet das Apostroph ( ' ), aber wenn Sie verwenden Sie eine Zeichenfolge oder ein Datum oder eine Zahl als Zeichenfolge, verwenden Sie das Apostroph (').
Du musst angemeldet sein, um einen Kommentar abzugeben.
Camila,
Sie sagten, Sie wollen, um das Feld zu aktualisieren LogOut aber nicht, wo in deinem SQL-code, den Sie erwähnt haben, in diesem Feld 😉
versuchen Sie dies:
Dynamische SQL -, den Prozess der "zusammenkleben" SQL-Anweisungen in der Art und Weise, die Sie vorgeschlagen haben, sollte vermieden werden, wo immer möglich. Es ist pingelig, fehleranfällig und potentiell gefährlich. (Tun Sie eine Suche im Internet für "SQL Injection" für mehr Informationen.)
Verwenden Sie stattdessen eine parametrisierte Abfrage. Erstellen Sie eine Abfrage mit Platzhaltern, die die Parameter, die Sie zuweisen, die tatsächlichen korrekt-eingegebenen Werte für die Parameter, und klicken Sie dann die Abfrage ausführen.
Den Vorteil für Sie, in diesem speziellen Fall wird Sie nicht haben, um sorgen über die Formatierung des Datums an. Access hat seine eigenen Besonderheiten, wenn es um die Interpretation von Datumsangaben formatiert
dd-mm-yyyy
- und das verursacht eine gewisse Verwirrung über die Jahre.So, Sie sollten wirklich eine parametrisierte Abfrage verwenden, die in Access erfolgt mit einem
QueryDef
Objekt, etwa so:Ja, es ist ein bisschen mehr Arbeit, aber es lohnt sich.