Registriert seit: 10. Jun 2008
72 Beiträge
|
Re: ADOQuery: nur eine Anfrage möglich???
10. Feb 2009, 16:01
Delphi-Quellcode:
var
ADOQ: TADOQuery;
...
procedure TfrmMain.KundenSuchen;
var
strKundennummer: string;
strVariante: string;
Where: string;
Where_Part1, Where_Part2: string;
OrderBy: string;
Select: string;
i : integer;
begin
try
ADOQ.Active := false;
if (Length(txtKundennummer.Text) > 0) or (Length(txtVariante.Text) > 0) then
begin
strKundennummer := LowerCase(txtKundennummer.Text + '%');
strVariante := LowerCase('%' + txtVariante.Text + '%');
with TStringList.Create do
try
Delimiter := ';';
StrictDelimiter := true;
DelimitedText := AktuellerBenutzer.Einstellungen.TABELLE_KUNDEN_SUCHFELDER;
ADOQ.Parameters.Clear;
with ADOQ.Parameters.AddParameter do
begin
Name := 'kundennummer';
Value := strKundennummer;
end;
Where_Part1 := 'WHERE (LOWER(u_kn) LIKE :kundennummer) AND (';
for i := 0 to Count - 1 do
begin
with ADOQ.Parameters.AddParameter do
begin
Name := Strings[i];
Value := strVariante;
end;
if Length(Where_Part2) > 0 then
Where_Part2 := Where_Part2 + ' OR ';
Where_Part2 := Where_Part2 + '(LOWER(' + Strings[i] + ') LIKE :''' + Strings[i] + ''')';
end;
finally
Where := Where_Part1 + Where_Part2 + ')';
Free;
end;
case cbSortierenNach.ItemIndex of
0: OrderBy := 'ORDER BY u_kn';
1: OrderBy := 'ORDER BY u_name';
2: OrderBy := 'ORDER BY u_vorname';
3: OrderBy := 'ORDER BY u_plz';
4: OrderBy := 'ORDER BY u_ort';
5: OrderBy := 'ORDER BY u_land';
end;
Select := 'SELECT * FROM KUNDEN ' + Where + ' ' + OrderBy;
ADOQ.SQL.Clear;
ADOQ.ParamCheck := true;
ADOQ.SQL.Text := Select;
ADOQ.Active := true;
ADOQ.Open;
end;
except
end;
end;
|
|
Zitat
|