Einzelnen Beitrag anzeigen

BBB

Registriert seit: 13. Jul 2006
25 Beiträge
 
#1

SQL Statements verknüpfen

  Alt 23. Aug 2006, 11:53
Datenbank: .adt • Version: 7.0 • Zugriff über: SQL
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???
  Mit Zitat antworten Zitat