![]() |
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 |
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* |
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: |
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; |
Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
Erstmal Willkommen in der DP!! :dp: Zitat:
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:
Gruß,
Query1.SQL.Text := 'INSERT INTO errorfile(PartName, PartNo, Error) VALUES ('''+strTmpPart+''', '''+strTmpNo+''', '''+strTmpError+''')';
|
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 |
Re: SQL: Fehlermeldung "rechtes Anführungszeichen fehlt
Zitat:
Das mit den Parametern sollte so auch bei dir Funktionieren! Wenn Du viel mit mySQL arbeitest kann ich dir z.B. die ![]() Da wird auf dem Rechner nur eine DLL benötigt um auf mySQL-Server zugreifen zu können. |
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 07:13 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