Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [SQL]: SyntaxProbs (https://www.delphipraxis.net/21726-%5Bsql%5D-syntaxprobs.html)

Robert_G 7. Mai 2004 10:21

Re: [SQL]: SyntaxProbs
 
Das würde so auf jeden Falle klappen (du musst höchtens noch Prameter.Value durch irgendwas erstezen, dass die ZEOS verwenden):
Delphi-Quellcode:
With DeineQuery Do
Begin
  SQL.Text :=
    'SELECT *' + #10 +
    'FROM  Buecher' + #10 +
    'WHERE Titel    Like :WTitel    And' + #10 +
    '      Verlag   Like :WVerlag   And' + #10 +
    '      Bestellnr Like :WBestellnr And' + #10 +
    '      Preis    =   :WPreis';
  // Parameterzuweisung
  With Parameters Do
    ParamByName('WTitel').Value    := WTitel;
    ParamByName('WVerlag').Value   := WVerlag;
    ParamByName('WBestellnr').Value := WBestellnr;
    ParamByName('WPreis').Value    := WPreis;
  End;
  // Ausführen
  Open;
End;

yankee 7. Mai 2004 10:56

Re: [SQL]: SyntaxProbs
 
Jo, thx. Ein Problem bleibt noch: Die while-Schleife wird nur einmal durchlaufen, anstatt 3mal.
Was soll das?
Delphi-Quellcode:
    while not ZQuery1.Eof do
    begin
        TitelComboBox.Items.Add(ZQuery1.FieldByName('Titel').AsString);
        VerlagComboBox.Items.Add(ZQuery1.FieldByName('Verlag').AsString);
        BestellnrComboBox.Items.Add(ZQuery1.FieldByName('Bestellnr').AsString);
        PreisComboBox.Items.Add(ZQuery1.FieldByName('Preis').AsString);
        ZQuery1.Next;
    end;

Sharky 7. Mai 2004 11:02

Re: [SQL]: SyntaxProbs
 
Bist Du sicher das auch drei Einträge zurück gegeben werden?
Prüfe das mal durch ein einfaches:

Delphi-Quellcode:
begin
  //Die Abfrage
  Open;
  ShowMessage ('Es wurden ' + IntToStr (ZQuery1.RecordCount) + ' Einträge gefunden');
  while not ZQuery1.Eof do
    begin
        TitelComboBox.Items.Add(ZQuery1.FieldByName('Titel').AsString);
        VerlagComboBox.Items.Add(ZQuery1.FieldByName('Verlag').AsString);
        BestellnrComboBox.Items.Add(ZQuery1.FieldByName('Bestellnr').AsString);
        PreisComboBox.Items.Add(ZQuery1.FieldByName('Preis').AsString);
        ZQuery1.Next;
    end;
end;

yankee 7. Mai 2004 11:05

Re: [SQL]: SyntaxProbs
 
Nein, es wird nur ein Ergebnis zurückgegeben.
Aber PHPMyAdmin bestätigt mir, dass 3 Einträge vorhanden sind...

Sharky 7. Mai 2004 11:09

Re: [SQL]: SyntaxProbs
 
Zitat:

Zitat von yankee
Nein, es wird nur ein Ergebnis zurückgegeben.
Aber PHPMyAdmin bestätigt mir, dass 3 Einträge vorhanden sind...

Dann liegt es an der WHERE Bedingung. Hast Du da noch einen kleinen Fehler?
Poste mal deine Aktuelle Procedure und die Feld-Definition der Tabelle.

yankee 7. Mai 2004 11:15

Re: [SQL]: SyntaxProbs
 
Delphi-Quellcode:
procedure TMainForm.LoadTitleList(WTitel, WVerlag, WBestellnr, WPreis:string);
begin
    With ZQuery1 Do
    Begin
        SQL.Text :=
        'SELECT *' + #10 +
        'FROM  Buecher' + #10 +
        'WHERE Titel    Like :WTitel    And' + #10 +
        '      Verlag   Like :WVerlag   And' + #10 +
        '      Bestellnr Like :WBestellnr And' + #10 +
        '      Preis    =   :WPreis';
      // Parameterzuweisung
        ParamByName('WTitel').Value    := WTitel;
        ParamByName('WVerlag').Value   := WVerlag;
        ParamByName('WBestellnr').Value := WBestellnr;
        ParamByName('WPreis').Value    := WPreis;
        Open;
         ShowMessage ('Es wurden ' + IntToStr (ZQuery1.RecordCount) + ' Einträge gefunden');
    End;
    while not ZQuery1.Eof do
    begin
        TitelComboBox.Items.Add(ZQuery1.FieldByName('Titel').AsString);
        VerlagComboBox.Items.Add(ZQuery1.FieldByName('Verlag').AsString);
        BestellnrComboBox.Items.Add(ZQuery1.FieldByName('Bestellnr').AsString);
        PreisComboBox.Items.Add(ZQuery1.FieldByName('Preis').AsString);
        ZQuery1.Next;
    end;
end;
Aufruf:
LoadTitleList('%','%','%','%');
Könnte es damit zusammenhängen, dass der Preis FLOAT ist und nicht mit einem % aufgerufen werden kann. Ich habe nämlich einen Datensatz, der bei Preis null hat...

Sharky 7. Mai 2004 11:18

Re: [SQL]: SyntaxProbs
 
Zitat:

Zitat von yankee
...Könnte es damit zusammenhängen, dass der Preis FLOAT ist und nicht mit einem % aufgerufen werden kann. Ich habe nämlich einen Datensatz, der bei Preis null hat...

Ja klar! Es würde ja auch keinen Sinn machen einen Preis zu suchen der z.B. 1* Euro kostet ;-)
Entweder wird genau nach einem Preis gesucht oder Du machst es mit zwei Variablen und einer BETWEEN abfrage.

yankee 7. Mai 2004 11:40

Re: [SQL]: SyntaxProbs
 
Gut, dann lasse ich den Preis vorläufig mal raus...
Jedenfalls lautet die SQL-Abfrage jetzt so:
Delphi-Quellcode:
SQL.Text :=
        'SELECT *' + #10 +
        'FROM  Buecher' + #10 +
        'WHERE Titel    Like :WTitel    And' + #10 +
        '      Verlag   Like :WVerlag   And' + #10 +
        '      Bestellnr Like :WBestellnr And';
Und es gibt 'ne exception. (Also jetzt nicht beim compilieren, sondern zur Laufzeit). Wieso?

Sharky 7. Mai 2004 11:44

Re: [SQL]: SyntaxProbs
 
Zitat:

Zitat von yankee
...
Delphi-Quellcode:
' Bestellnr Like :WBestellnr And';
Und es gibt 'ne exception. (Also jetzt nicht beim compilieren, sondern zur Laufzeit). Wieso?

Das letze AND muss natürlich raus ;-)

shmia 7. Mai 2004 11:44

Re: [SQL]: SyntaxProbs
 
Zitat:

Zitat von yankee
Und es gibt 'ne exception. (Also jetzt nicht beim compilieren, sondern zur Laufzeit). Wieso?

Weil nach dem letzten AND nichts mehr folgt !! :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Seite 2 von 3     12 3      

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