Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Was stimmt nicht? --> SQL Abfrage (https://www.delphipraxis.net/18106-stimmt-nicht-sql-abfrage.html)

Plague 14. Mär 2004 20:31


Was stimmt nicht? --> SQL Abfrage
 
Hallo,

bei der Abfrage einer MySQL Datenbank erscheint folgender Fehler:
SQL Error: You have an error in your SQL syntax near " at line 1.

Was mache ich falsch?
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
LI: TListItem;
q :string;
begin
q:= '%' + Edit1.Text + '%';
with ZReadOnlyQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add ('SELECT * FROM Adresse WHERE');
    SQL.Add ('ID LIKE :ID OR ');
    SQL.Add ('Name LIKE :Name OR ');
    SQL.Add ('Vorname LIKE :Vorname OR ');
    SQL.Add ('Adresse LIKE :Adresse OR ');
    SQL.Add ('PLZ LIKE :PLZ OR ');
    SQL.Add ('Stadt LIKE :Stadt OR ');
    ParamByName ('ID').AsString := q;
    ParamByName ('Name').AsString := q;
    ParamByName ('Vorname').AsString := q;
    ParamByName ('Adresse').AsString := q;
    ParamByName ('PLZ').AsString := q;
    ParamByName ('Stadt').AsString := q;
    open;
    ListView1.Items.BeginUpdate;
    Listview1.Items.Clear;
    while not (EOF) do
    begin
      LI := Listview1.Items.Add;
      LI.ImageIndex := 0;
      LI.Caption := (FieldByName('ID').AsString);
      LI.SubItems.Add(FieldByName('Name').AsString);
      LI.SubItems.Add(FieldByName('Vorname').AsString);
      LI.SubItems.Add(FieldByName('Adresse').AsString);
      LI.SubItems.Add(FieldByName('PLZ').AsString);
      LI.SubItems.Add(FieldByName('Stadt').AsString);
      Next;
    end;
    ListView1.Items.EndUpdate;
    close;
  end;
end;
Danke
Thomas

Leuselator 14. Mär 2004 20:43

Re: Was stimmt nicht? --> SQL Abfrage
 
Schnellschuss: versuch mal zwischen dem letzten Q.SQL.Add und dem ersten Q.SQL.ParamByName ein Q.Prepare einzufügen.

Robert_G 14. Mär 2004 20:46

Re: Was stimmt nicht? --> SQL Abfrage
 
@Leuselator -> Augen auf :cyclops: :wink:

@Plaque nimm das letzte "OR" weg -> danach kommt doch kein Vergleich mehr!

Plague 14. Mär 2004 20:47

Re: Was stimmt nicht? --> SQL Abfrage
 
Hat nichts gebracht.
Das verwunderliche ist auch, dass es mit dem Code in einem anderen Programm funktioniert. Was kann es sein...???

Robert_G 14. Mär 2004 20:48

Re: Was stimmt nicht? --> SQL Abfrage
 
mit dem "OR" am Ende? :gruebel: Das geht nicht...

DelphiDeveloper 14. Mär 2004 20:51

Re: Was stimmt nicht? --> SQL Abfrage
 
könnte mir vorstellen dass du die echten strings so angeben musst:

ParamByName ('Name').AsString := quotedstr(q);

Robert_G 14. Mär 2004 20:56

Re: Was stimmt nicht? --> SQL Abfrage
 
Zitat:

Zitat von DelphiDeveloper
...ParamByName ('Name').AsString := quotedstr(q);

Wird nicht klappen. Die "Parameter" sind SQL-Variablen, die nicht in den String des Statements gebastelt werden, sondern wirkliche Variablen im Statement sind.
Delphi-Quellcode:
  ...
  q:= 'Hallo';
  ParamByName ('Name').AsString := quotedstr(q);
... ergibt dann ...
Delphi-Quellcode:
 #39 + 'Hallo' + #39
... in der Variable.

Plague 14. Mär 2004 21:02

Re: Was stimmt nicht? --> SQL Abfrage
 
Ich bin soooo dumm...
Doch, die Variante mit dem OR wegmachen, hat gestimmt...
Es klappt jetzt...

Danke
Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 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