2016-10-04 1 views
0

Ich bin neu in MS Access und SQL. Jetzt versuche ich eine Inventardatenbank für unser Unternehmen in Ms Access zu erstellen. Ich versuche, Daten aus dem Empfangsformular zu extrahieren, um den Lagerbestand zu aktualisieren. Aber ich habe eine Syntaxfehlermeldung erhalten, als ich eine SQL-Anweisung update ausgeführt habe. Das ist komisch für mich, weil ich dieselben Anweisungen benutzte, die in anderen Tabellen erfolgreich ausgeführt wurden. Der einzige Unterschied ist, dass mein früheres erfolgreiches Update durch direkten Textaustausch funktioniert und mein Fehler, dass das Update in einem numerischen Objekt funktioniert.Syntaxfehler in SQL-Update

Bitte helfen Sie mir zu überprüfen, wo ich falsch liege.

Dies ist mein Code:

Private Sub Command96_Click() 
CurrentDb.Execute "UPDATE tbl_Current_Stock" & _ 
        "SET Stock_Level= Stock_Level + " & Me!txtOrderQty & "" & _ 
        "Where tbl_Current_Stock.Raw_Material= " & Me!cboPurchase.Column(1) & "" 
End Sub 

Dank!

+0

Sind diese Unterstriche wirklich in Ihrem Code? Jedenfalls sehe ich kein Leerzeichen zwischen den Anweisungen 'UPDATE' und 'SET'. –

+1

Unterstriche in Visual Basic bedeuten, dass die aktuelle Zeile in der nächsten Zeile fortgesetzt wird. –

+0

Bitte lesen Sie: [Wie debugge dynamische SQL in VBA] (http: // stackoverflow.com/questions/418960/managen und debuggen-sql-Abfragen-in-ms-Zugriff/1099570 # 1099570) und [Wie VBA-Code debuggen] (http://www.cpearson.com/excel/DebuggingVBA.aspx) – Andre

Antwort

1

Freund, folgen ein paar Tipps, um Ihre updade richtig zu generieren:

  • prüfen die Räume nach Ihrer Anfrage
  • Vorsicht verketten nicht zu generieren Abfragen mit Keywords verklebte

AKTUALISIEREN tableTestSET nome = 'Mein Name' WHERE ac tive IS NOT NULL (falsch)

UPDATE tableTest SET name = 'My Name' WHERE active IS NOT NULL 
  • Vergessen Sie nicht, Anführungszeichen zu verwenden, wenn Strings

UPDATE tableTest SET name = My Name WHERE IS active NOT NULL (falsch)

UPDATE tableTest SET name = 'My Name' WHERE active IS NOT NULL 

Ich hoffe, es hilft ...

Good Luck!

+0

Wie von Mauic und Robert gesagt, etwas Raum verpasst. Danke für Ihre Hilfe! –

3

Sie müssen Leerzeichen vor SET und Where hinzufügen. Andernfalls sieht Ihr Befehl ungefähr wie UPDATE tbl_Current_stockSET Stock_Level= Stock_Level + 3Where.... aus.

Private Sub Command96_Click() 
CurrentDb.Execute "UPDATE tbl_Current_Stock" & " " & _ 
       "SET Stock_Level= Stock_Level + " & Me!txtOrderQty & " " & _ 
       "Where tbl_Current_Stock.Raw_Material= " & Me!cboPurchase.Column(1) & "" 
End Sub 

Sie können auch die Raw_Material Spalte in Anführungszeichen wickeln müssen, wenn es nicht numerisch ist.

+0

Danke Robert. In meinem Fall ist Raw_Material eine Nachschlagespalte. Nebenbei schreibe ich die SQL-Anweisung eine Klausel eine Zeile. Und ich habe den Code im Bürowort geschrieben. Wie können Sie feststellen, dass in meinen Codes ein Leerzeichen fehlt? Könnten Sie mir bitte einen guten Sql-Code-Editor empfehlen? Vielen Dank! –

2

überprüfen Sie Ihren Satz richtig. Es gibt keinen technischen Fehler. In der Abfrage fehlt ein Leerzeichen.

fügen Sie einfach Leerzeichen vor "SET" und "where" Wörtern hinzu.

CurrentDb.Execute "UPDATE tbl_Current_Stock" & _ 
       " SET Stock_Level= Stock_Level + " & Me!txtOrderQty & "" & _ 
       " Where tbl_Current_Stock.Raw_Material= " &  Me!cboPurchase.Column(1) & "" 
+0

Genau wie du erwähnt hast, setze ich die Anweisungen auf Satz und es funktioniert! Vielen Dank für Ihre Korrektur. –