Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi fehlermeldung: Missing (;) at the and of sql statement (https://www.delphipraxis.net/89325-fehlermeldung-missing-%3B-sql-statement.html)

vanilla 29. Mär 2007 15:05

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:
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;
[edit=Matze][delphi]-Tag geschlossen. Mfg, Matze[/edit]

Matze 29. Mär 2007 15:12

Re: fehlermeldung: Missing (;) at the and of sql statement
 
Laut Fehlermeldung tippe ich darauf, denn die sagt ja eigentlich schon alles:

Code:
 ADOQuery1.SQL.Text := ' INSERT INTO NAD ( NAD ) VALUES ( '+neuesNAD+' ) ON DUPLICATE KEY UPDATE ( ID = ID+1 );';
Vorletztes Semikolon.

Luckie 29. Mär 2007 15:13

Re: fehlermeldung: Missing (;) at the and of sql statement
 
Die Fehlermeldung sagt doch schon alles. Bei deinem SQL-Statement fehlt das Semikolon am Ende.

vanilla 29. Mär 2007 15:18

Re: fehlermeldung: Missing (;) at the and of sql statement
 
hi

matze ich hab dein vorschlag ausprobiert und das problem ist trotzdem nicht gelöst :(

Matze 29. Mär 2007 15:25

Re: fehlermeldung: Missing (;) at the and of sql statement
 
Hi,

kommt nun ein neuer Fehler oder immer noch der gleiche?

hoika 29. Mär 2007 15:33

Re: fehlermeldung: Missing (;) at the and of sql statement
 
Hallo,

bei Insert kommt kein Open, sondern ein ExecSQL hin.


Heiko

vanilla 29. Mär 2007 15:35

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... :(

mkinzler 29. Mär 2007 15:42

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;
...

shmia 29. Mär 2007 17:38

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:
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)+')';
Wobei die gezeigte Lösung über Parameter zwar etwas langsamer aber doch zu bevorzugen ist.
Aber eben ohne dieses ON DUPLICATE KEY UPDATE.

Flocke 29. Mär 2007 17:39

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.
Seite 1 von 2  1 2      

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