Leider konnte ich über die Suchefunktion im Forum mal wieder nichts finden und deswegen Frage ich nochmal, obwohl ich mir sicher bin, dass dieses Problem schonmal jemand vor mir hatte.
Ich möchte Datensätze aus einer Tabelle filtern und die Bedingung bzw. das
SQL-Statement für verschiedene Fälle anders übergeben. Die Abfrage für die Bedinungen dazu habe ich, aber mir fehlt die Verknüpfung der
SQL-Statements.
Bevor ich den Filter mit
SQL definiert habe sah das ganze noch so aus:
Delphi-Quellcode:
begin
cFilter := '';
if txtPrimNutz.Text <> '' then begin
if checkboxExakt1.checked = true then begin
cFilter := 'Upper(PRIMNUTZER) = ALLTRIM("'+UpperCase(txtPrimNutz.Text)+'")';
end
else begin
cFilter := 'Upper(PRIMNUTZER) = ALLTRIM("'+UpperCase(txtPrimNutz.Text + '*')+'")';
end;
end;
if txtBez.Text <> '' then begin
if checkboxExakt2.Checked = true then begin
if cFilter <> '' then cFilter := cFilter + ' and';
cFilter := cFilter + ' Upper(BEZEICHNUNG) = ALLTRIM("'+UpperCase(txtBez.Text)+'")';
end
else begin
if cFilter <> '' then cFilter := cFilter + ' and';
cFilter := cFilter + ' Upper(BEZEICHNUNG) = ALLTRIM("'+UpperCase(txtBez.Text + '*')+'")';
end;
end;
if txtStandort.Text <> '' then begin
if checkboxExakt3.checked = true then begin
if cFilter <> '' then cFilter := cFilter + ' and';
cFilter := cFilter + ' Upper(STANDORT) = ALLTRIM("'+UpperCase(txtStandort.Text)+'")';
end
else begin
if cFilter <> '' then cFilter := cFilter + ' and';
cFilter := cFilter + ' Upper(STANDORT) = ALLTRIM("'+UpperCase(txtStandort.Text + '*')+'")';
end;
end;
//Filter setzen
AdsTable1.Filter := cFilter;
If cFilter <> ''then AdsTable1.Filtered := true;
end;
Mit
SQL würde es für den ersten Teil so aussehen und auch soweit funktionieren:
SQL-Code:
begin
cFileName := AdsTable1.TableName;
if txtPrimNutz.Text <> '' then begin
if checkboxExakt1.checked = true then begin
AdsQuery1.Close;
AdsQuery1.SQL.Clear;
AdsQuery1.SQL.Add('SELECT * FROM "cFileName" WHERE PRIMNUTZER = '+UpperCase(txtPrimNutz.Text)+'');
end
else begin
AdsQuery1.Close;
AdsQuery1.SQL.Clear;
AdsQuery1.SQL.Add('SELECT * FROM "cFileName" WHERE PRIMNUTZER = '+UpperCase(txtPrimNutz.Text + '*')+'');
end;
end;
.
.
.
Aber wie verknüpf ich die Statements jetzt wieder miteinander?
Bzw. wie würde eine and-Verknüpfung von
AdsQuery1.SQL.Add('SELECT * FROM "cFileName" WHERE PRIMNUTZER = '+UpperCase(txtPrimNutz.Text)+'');
und
AdsQuery1.SQL.Add('SELECT * FROM "cFileName" WHERE BEZEICHNUNG = '+UpperCase(txtBez.Text)+'');
aussehen???