Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Suchabfrage (https://www.delphipraxis.net/12135-sql-suchabfrage.html)

Budda 21. Nov 2003 10:23


SQL Suchabfrage
 
Mahlzeit,

also folgendes Problem. Ich möchte mir eine SQl Suchabfrage machen die in einer bestimmten Tabelle in einer bestimmten Spalte nach einem Text sucht.

Habe dazu eine Combobox in der ich die Tabelle aussuchen kann und eine Combobox wo ich aussuchen kann welche Spalte und zu guterletzt noch ein Editfeld wo der Suchbegriff eingegeben wird. Soweit so gut, habe nun folgendes probiert:
Delphi-Quellcode:
ADOQuery1.Active := false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add ('select * from' + QuotedStr ('%' + ComboBox1.Text + '%') +' where' + QuotedStr ('%' + ComboBox2.Text + '%') +' like' + QuotedStr ('%' + Edit1.Text + '%'));
ADOQuery1.SQL.Add ('order by wert1');
ADOQuery1.Active := true;
DBGrid1.Refresh;
So das problem an der ganzen Sache ist das wenn ich z.B. einen Namen eingebe der exakt so in der DB ist bekomm ich kein resultat. Des Weiteren hätte ich ganz gerne das man auch nur nach teilen suche kann, also mit *textstück oder textstück* etc. Halt diese Variablen die man normalerweise bei einer Suche in anderen Programmen zuer Verfügung hat.

Könnt mir da vielleicht jemand weiterhelfen ?

Gruss
Budda

Sharky 21. Nov 2003 10:32

Re: SQL Suchabfrage
 
Hai Budda,

Zitat:

Zitat von Budda
Mahlzeit

Mahl dir deine Zeit doch selber :mrgreen:

Warum setzt Du denn den Tabellen- und Spaltennamen in Hochkommas? Das brauchst Du denke ich nicht.

Zitat:

... nach teilen suche kann, also mit *textstück oder textstück* etc.
Durch den Einsatz von
SQL-Code:
feldname LIKE %suchwort%
machst Du das ja schon.

Wenn Du es so machen möchtest wie Du schreibst würde ich das so machen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 sSuchString : String;
begin
 sSuchString := StringReplace(Edit1.Text,'*','%');
 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add ('select * from' + ComboBox1.Text + ' where' + ComboBox2.Text ' like' + QuotedStr (sSuchString));
 ADOQuery1.SQL.Add ('order by wert1');
 ADOQuery1.Open;
end;

Budda 21. Nov 2003 11:02

Re: SQL Suchabfrage
 
Zitat:

Mahl dir deine Zeit doch selber
Erwischt :lol:

Ersteinmal danke für deine Hilfe, allerdings hakt es noch bei dem StringReplace, da möchte er gerne noch mehr Parameter haben. Er scheint da noch Flags haben zu wollen, nur die Frage welche ^^

Gruss
Budda

Treffnix 21. Nov 2003 11:05

Re: SQL Suchabfrage
 
Zitat:

Er scheint da noch Flags haben zu wollen, nur die Frage welche ^^
Versuchs mit rfReplaceAll

OLLI_T 21. Nov 2003 11:40

Re: SQL Suchabfrage
 
Hallo Budda!

Übersichtlicher wird datt ganze mit der Fkt Format. Das like wird nur bei Bedarf gesetzt (ungetestet):

Delphi-Quellcode:
S:=Edit1.Text;
Sep:='=';
If S[1]='*' Then Begin S[1]:='%'; Sep:='like'; End;
L:=Length(S);
If S[L]='*' Then Begin S[L]:='%'; Sep:='like'; End;

ADOQuery1.SQL.Add(S:=Format('Select * From %s Where %s %s "%s"',[ComboBox1.Text,ComboBox2.Text,Sep,S]));
Gruss

OLLI

Budda 21. Nov 2003 12:51

Re: SQL Suchabfrage
 
Jup, danke funktioniert nun alles ;)


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