Ich schreibe ein Programm mit C#, um automatisch Daten in eine Navision-Datenbank über ODBC einzufügen. Ich fülle ein DataTable-Objekt, indem ich die OdbcDataAdapter.Fill() Methode aufruft. Nachdem ich einige Werte geändert habe, möchte ich die Original-DB mit OdbcDataAdapter.Update() aktualisieren. Dies führt jedoch immer zu:C# - OdbcDataAdapter.Update() führt zu Syntaxfehler
FEHLER [42000] [Simba] [SimbaMotor ODBC-Treiber] UPDATE Item SET Location =? WHERE ((Nr. < < ??? >> =?) UND ((? = 1 UND Ort ist NULL) ODER (Standort =?))) Fehler [42000] [Simba] [SimbaEngine ODBC-Treiber] Syntaxfehler.
Dies ist der Code:
static void Main(string[] args)
{
DataTable Item = new DataTable();
OdbcConnection connection = new OdbcConnection("DSN=Navision Frank-Backup");
connection.Open();
OdbcDataAdapter adapter = new OdbcDataAdapter();
adapter.SelectCommand = new OdbcCommand("select \"No.\", \"Location\" from Item where \"No.\" = 'AA0182'", connection);
OdbcCommandBuilder builder = new OdbcCommandBuilder(adapter);
adapter.Fill(Item);
Item.Rows[0].BeginEdit();
Item.Rows[0]["Location"] = "SW";
Item.Rows[0].EndEdit();
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(Item);
}
Ich bin der Hoffnung, jemand mir mit, dass helfen kann.
Edit: Ich habe gerade herausgefunden, dass, wenn ich den Update-Befehl manuell eingestellt,
adapter.UpdateCommand = new OdbcCommand("update Item set Location = 'SW' where \"No.\" = 'AA0182'");
mit Es funktioniert völlig in Ordnung. Allerdings kann ich diese Methode nicht verwenden, da ich mehrere Datensätze ändern muss.
konnte nicht die angegebene Abfrage 'UPDATE Artikel SET ...' in der mitgelieferten Code finden! Bist du sicher, dass du den richtigen Code mit der Frage hinzugefügt hast? –
Ja, das ist genau der Code, den ich gerade benutzt habe. – tubu
Sie haben einen Trigger auf dem Tisch erstellt? Sind Sie sicher, dass der Fehler nur auf diesen Code zurückzuführen ist? –