Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL: Fehlermeldung "rechtes Anführungszeichen fehlt" (https://www.delphipraxis.net/29892-sql-fehlermeldung-rechtes-anfuehrungszeichen-fehlt.html)

alfgar 16. Sep 2004 09:04


SQL: Fehlermeldung "rechtes Anführungszeichen fehlt&quo
 
Hallo,
bin neu hier und auch neu in Delphi :coder2:
Hab eine warscheinlich triviale Frage zu einem
Query.SQL.Text - Statement:

Query1.SQL.Text := 'INSERT INTO errorfile(PartName, PartNo, Error) VALUES ('''+strTmpPart+''', '''+strTmpNo+''', '''+strTmpError+''');';

bringt immer die Fehlermeldung "rechtes Anführungszeichen fehlt".
Hab schon einiges ausprobiert, aber keine Lösung gefunden.
Übrigens: die errorfile Tabelle wird einwandfrei mit den
gewünschten Daten gefüllt.

Was mach ich falsch? :gruebel:

Vielen Dank für die Hilfe
alfgar

Sharky 16. Sep 2004 09:08

Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
 
Hai alfgar,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXIS".

Ich würde auf jedem Fall vermeiden mit solchen Stringkonstruktionen zu arbeiten. Mit diesen ganzen '''' baust Du dir selber nur Fehler ein.
Optimal wäre die Verwendung von Parametern. Um dir dafür ein Beispiel zu geben müsste ich aber wissen mit welchen Querys Du arbeitest. (ADOQuery usw.).

[Edit]@Alfons_G: Das wollte ich eben auch noch schreiben. *g*

Alfons_G 16. Sep 2004 09:11

Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
 
Zusätzlich zur Verwendung von Parametern sollte man Strings bei SQL-Anweisungen nie mit manuell gesetzten Anführungszeichen versehen, sondern immer die Delphi-Funktion QuotedStr() verwenden. Die "verarztet auch Anführungszeichen, welche im String vorkommen.

:coder:

Sharky 16. Sep 2004 09:21

Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
 
So, ich habe mal schnell etwas getippelt :stupid:
Einmal mit Parameter (was ich persönlich für besser halte) und einmal mit der Verwendung von QuotedStr.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Text := 'INSERT INTO errorfile(PartName, PartNo, Error) '+#10
  + ' VALUES (:pstrTmpPart,:pstrTmpNo,:pstrTmpError)';
  //Die mit : beginnenden "Variablen" sind die Parameter

  Query1.ParamCheck := True; // Parameterverarbeitung aktivieren

  //Den Parameter Werte zuweisen
  Query1.Params.ParamByName('pstrTmpPart').AsString := strTmpPart;
  Query1.Params.ParamByName('pstrTmpNo').AsString := strTmpNo;
  Query1.Params.ParamByName('pstrTmpError').AsString := strTmpError;
  Query1.ExecSQL; // Query ausführen
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Text := 'INSERT INTO errorfile(PartName, PartNo, Error) ' +#10
   + 'VALUES ('
   + QuotedStr (strTmpPart) +','
   + QuotedStr (strTmpNo) + ','
   + QuotedStr (strTmpError)
   + ')';
   Query1.ExecSQL;
end;

Akut-Programming 16. Sep 2004 09:29

Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
 
Erstmal Willkommen in der DP!!

:dp:


Zitat:

Zitat von alfgar
Query1.SQL.Text := 'INSERT INTO errorfile(PartName, PartNo, Error) VALUES ('''+strTmpPart+''', '''+strTmpNo+''', '''+strTmpError+''');';

:gruebel:
N Tip wäre vielleicht, das erste Semikolon in deinem Statement weg zu lassen. Du brauchst unter Delphi deine Statements nicht mit einen Semikolon abzuschließen. Daher wirst du auch die Meldung "Rechtes Anführungszeichen fehlt" bekommen. Unter Delphi beendest du ja mit dem Semikolon eine Anweisung. Versuchs mal so:
Delphi-Quellcode:
Query1.SQL.Text := 'INSERT INTO errorfile(PartName, PartNo, Error) VALUES ('''+strTmpPart+''', '''+strTmpNo+''', '''+strTmpError+''')';
Gruß,

alfgar 16. Sep 2004 09:43

Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
 
Ups(schon antworten da ?!),
ihr seit ja schneller als meine ISDN-Verbindung :-D

Ja, also ich habe auf meinem Formular ein TQuery eingefügt, welches ich über
ODBC mit einer MySQL-datenbank verbunden habe.

ADOQuery hab ich leider nicht zur Verfügung
Die Hilfe (Thema z.B. ADOConnection) sagt dazu "Dieses Leistungsmerkmal ist in der aktuellen Delphi-Version nicht verfügbar."
Ich benutze Delphi 5 (Compilierung 5.62).
Schade eigentlich ADO kenn ich schon aus VB. :|
Jetzt schau ich mir das mit dem QuotredStr() mal an...

Danke schon mal für den Tip
alfgar

Sharky 16. Sep 2004 09:48

Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
 
Zitat:

Zitat von alfgar
Ups(schon antworten da ?!),
ihr seit ja schneller als meine ISDN-Verbindung :-D

Aber immer :stupid:

Das mit den Parametern sollte so auch bei dir Funktionieren!

Wenn Du viel mit mySQL arbeitest kann ich dir z.B. die Zeos-Komponenten empfehlen.
Da wird auf dem Rechner nur eine DLL benötigt um auf mySQL-Server zugreifen zu können.

alfgar 16. Sep 2004 09:54

Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
 
Danke ! an alle Beteiligten :dp:

Jetzt ist alles klar. :-D

alfgar


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz