![]() |
Datenbank: access • Version: 2000 • Zugriff über: ado
fehlermeldung: Missing (;) at the and of sql statement
hallo leute,
folgendes Problem: ich habe folgende Funktion geschrieben (ganz egal was sie tut), neuesNAD ist vom typ string, wenn ich compilierre bekomme ich die fehlermeldung: Missing (;) semikolon at the and of sql statement ?????? wo steckt der fehler?? hoffe, dass mir einer helfen kann.
Delphi-Quellcode:
[edit=Matze][delphi]-Tag geschlossen. Mfg, Matze[/edit]
if (neuesNAD <> 'Name') then
begin try ADOQuery1.SQL.Text := ' INSERT INTO NAD ( NAD ) VALUES ( '+neuesNAD+' ) ON DUPLICATE KEY UPDATE ( ID = ID+1 ) '; ADOQuery1.Connection := self.ADOConnection1; ADOQuery1.Open; except showmessage('Fehler!'); end; end; |
Re: fehlermeldung: Missing (;) at the and of sql statement
Laut Fehlermeldung tippe ich darauf, denn die sagt ja eigentlich schon alles:
Code:
Vorletztes Semikolon.
ADOQuery1.SQL.Text := ' INSERT INTO NAD ( NAD ) VALUES ( '+neuesNAD+' ) ON DUPLICATE KEY UPDATE ( ID = ID+1 );';
|
Re: fehlermeldung: Missing (;) at the and of sql statement
Die Fehlermeldung sagt doch schon alles. Bei deinem SQL-Statement fehlt das Semikolon am Ende.
|
Re: fehlermeldung: Missing (;) at the and of sql statement
hi
matze ich hab dein vorschlag ausprobiert und das problem ist trotzdem nicht gelöst :( |
Re: fehlermeldung: Missing (;) at the and of sql statement
Hi,
kommt nun ein neuer Fehler oder immer noch der gleiche? |
Re: fehlermeldung: Missing (;) at the and of sql statement
Hallo,
bei Insert kommt kein Open, sondern ein ExecSQL hin. Heiko |
Re: fehlermeldung: Missing (;) at the and of sql statement
immernoch die gleiche..
hab jetzt auch ADOQuery1.Open; mit ADOQuery1.ExecSQL ; umgetauscht aber ändern tut sich nix... :( |
Re: fehlermeldung: Missing (;) at the and of sql statement
Versuch mal:
Delphi-Quellcode:
ADOQuery1.SQL.Text := ' INSERT INTO NAD ( NAD ) VALUES ( :neuesNAD ) ON DUPLICATE KEY UPDATE ( ID = ID+1 );';
ADOQuery1.Parameters.ParamByName('neuesNAD').Value := neuesNAD; ... |
Re: fehlermeldung: Missing (;) at the and of sql statement
Dieses "ON DUPLICATE KEY UPDATE (..." ist doch kein Standard SQL.
Was soll das denn bewirken ?? Wenn man einen Insert mit einem doppelten Key macht, gibt's halt eine Exception und die Datenbank verweigert das Einfügen. Wenn man ein AutoInc-Feld als Primary Key hat, dann lässt man das Feld einfach aus der Feldliste raus; die Datenbank regelt das schon. Wenn man fertige SQL Inserts, Updates oder Deletes hat, setzt man diese am schnellsten direkt über die Connection ab:
Delphi-Quellcode:
Wobei die gezeigte Lösung über Parameter zwar etwas langsamer aber doch zu bevorzugen ist.
ADOConnection1.Execute('INSERT INTO NAD ( NAD ) VALUES ( '+neuesNAD+')';
// Sollte Feld NAD ein Stringfeld sein, dann so ADOConnection1.Execute('INSERT INTO NAD ( NAD ) VALUES ( '+QuotedStr(neuesNAD)+')'; Aber eben ohne dieses ON DUPLICATE KEY UPDATE. |
Re: fehlermeldung: Missing (;) at the and of sql statement
1. Ob am Ende ein Semikolon steht oder nicht sollte schnurzpiepegal sein ;)
2. Die Fehlermeldung deutet darauf hin, dass der SQL-Parser das Statement irgendwo mittendrin schon für abgeschlossen hält und dann ein Semikolon erwartet, um es von nächsten Statement zu trennen - bist du sicher, dass Access "ON DUPLICATE KEY blablabla" unterstützt? // Upps: Shmia war schneller |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz