AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL]: SyntaxProbs

Ein Thema von yankee · begonnen am 7. Mai 2004 · letzter Beitrag vom 7. Mai 2004
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#1

[SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:06
Ich habe die Fogende Abfrage an 'nem MySQL-Server:
ZQuery1.SQL.Text :='SELECT * FROM buecher WHERE `Titel`=''' +WTitel+ ''' `Verlag`=''' +WVerlag+ ''' `Bestellnr`=''' +WBestellnr+ ''' `Preis`=''' +WPreis+ ''; Bloß funzt es nicht. Kurze Erklärung:
WTitel, WVerlag usw. Sind Variabeln. In meinem Beispiel habe ich einfach ein * drin. Ich habe es auch schon mit einem % versucht...

Was ist daran falsch?
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:12
Ich täte es so tun:

ZQuery1.SQL.Text :='SELECT * FROM buecher WHERE [Titel]=' + QuotedStr(WTitel) + ' [Verlag]=' + QuotedStr(WVerlag) + ' [Bestellnr]=' + QuotedStr(WBestellnr) + ' [Preis]=' + QuotedStr(WPreis); ......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#3

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:22
Ich habe den Text aus deinem Beitrag sogar go copy&pasted, aber der Syntaxfehler bleibt gleich.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:23
Also ich würde es auch so wie Sakura machen; aber zusätzlich noch ein
AND zwischen die Vergleiche in der Where-Bedingung einfügen.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:30
Zitat von shmia:
AND zwischen die Vergleiche in der Where-Bedingung einfügen.
Ja, den Teil habe ich gar nicht realisiert

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:38
Hai yankee,

ich kann nur einen Tip geben baue deine SQL-Strings anders auf

Hier einmal ein Beispiel wie ich es in diesem Fall machen würde:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with ZQuery1 do
  begin
    Close;
    SQL.Text :=
     'SELECT * FROM buecher ' + #10 +
     'WHERE (Titel LIKE :WTitel)' +#10+
     'AND (Verlag LIKE :WVerlag)' +#10+
     'AND (Bestellnr LIKE :WBestellnr)' +#10+
     'AND (Preis = :WPreis)';
    // Ein * in dem Suchtext wird durch den SQL-Wildcart '%' ersetzt
    ParamByName ('WTitel').AsString := StringReplace(WTitel,'*','%',[rfReplaceAll]);
    ParamByName ('WVerlag').AsString := StringReplace(WVerlag,'*','%',[rfReplaceAll]);
    ParamByName ('WBestellnr').AsString := StringReplace(WBestellnr,'*','%',[rfReplaceAll]);
    ParamByName ('WPreis').AsString := StringReplace(WPreis,'*','%',[rfReplaceAll]);
    Open;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#7

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:51
das bringt mich weiter, thx.
Aber in Problem bleibt: Es kommt zwar keine Fehlermeldung mehr, aber es passiert dafür auch grundsätzlich nicht. Mal die komplette Procedure:
Delphi-Quellcode:
procedure TMainForm.LoadTitleList(WTitel, WVerlag, WBestellnr, WPreis:string);
begin
    ZQuery1.SQL.Text :='SELECT * FROM buecher ' + #10 +
     'WHERE (Titel LIKE :WTitel)' +#10+
     'AND (Verlag LIKE :WVerlag)' +#10+
     'AND (Bestellnr LIKE :WBestellnr)' +#10+
     'AND (Preis = :WPreis)';
    ZQuery1.Open;
    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;
Ich rufe die Procedure dann noch mit
LoadTitleList('%','%','%','%');
auf.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:52
Ähm....

Wo ist in dem Code das ParamByName???
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#9

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 09:59
Den Befehl kannte ich bis jetzt nicht. Ich habe mal in der OH nachgesehen, aber daraus werde ich nicht schlau (zumal die auf Englisch ist...)
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#10

Re: [SQL]: SyntaxProbs

  Alt 7. Mai 2004, 10:07
Zitat von yankee:
Den Befehl kannte ich bis jetzt nicht. Ich habe mal in der OH nachgesehen, aber daraus werde ich nicht schlau (zumal die auf Englisch ist...)
Dann ein einfaches Beispiel

Delphi-Quellcode:
begin
  with Query1 do
  begin
    Close;
    SQL.Text := 'SELECT * FROM tabelle WHERE name = :myParameter';
    ParamByName ('myParameter').AsString := 'Sharky';
    Open;
  end;
end;
:myParameter ist ein Parameter in der SQL-Anweisung. Diesem muss jetzt mit der Funktion ParamByName ein Wert zugewiesen werden.

Beim DB-Server kommt dann folgender SQL-Befehl an:
SELECT * FROM tabelle WHERE name = 'Sharky' Der Vorteil ist:
a) Der Quellcode ist übersichtlicher
b) Du brauchst dich nicht um die richtige "Formatierung" zu kümmern, das sollte der Treiber machen. (z.B. Das Richtige Datumsformat, Text in Hochkommas setzen usw.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 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