Thema: Delphi SQL ABFRAGE BOOLEAN

Einzelnen Beitrag anzeigen

GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#1

SQL ABFRAGE BOOLEAN

  Alt 31. Mär 2005, 17:11
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery TDataSource
Hallo,

habe 18 editfelder (Suchkriterien)
meine Datenbank hat ebenfalls 18 Felder

In jedem dieser Editfelder kann der User etwas eintragen.

Nach dem Drücken von Enter in einem Editfeld wird aus allen Feldern die nicht leer sind der SQL Abfagestring gebaut.

Bis dahin läuft alles Super.

Nur mit einem Feld nicht.

Eines meiner Datenbankfelder ist ein Boolsches Feld.

Wenn der User in das entsprechende Editfeld ein Ja eingibt, dann soll die Datenbank nur alle Datensätze mit dem True Wert ausgeben.

Hier nun der Code:

Delphi-Quellcode:
procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
var pruefEingabe: integer;
    s: string;
begin
    pruefEingabe:=ord(key);
    if pruefEingabe=13 then //Enter-Taste gedrückt??
    begin
     FindSQL(sender);
     with Query_Suchen do
     begin
      active := false;
      sql.clear;
      sql.add(sqlmerker);
      ParamCheck := true;
      if Edit5.Text <>'then
      begin
        s := Edit5.Text + '%';
        ParamByName ('retnr').AsString := s;
      end;
      if Edit6.Text <>'then
      begin
        s := Edit6.Text + '%';
        ParamByName ('lieferant').AsString := s;
      end;
      if Edit7.Text <>'then
      begin
        s := Edit7.Text + '%';
        ParamByName ('kunde').AsString := s;
      end;
      if Edit8.Text <>'then
      begin
        s := Edit8.Text + '%';
        ParamByName ('artikel').AsString := s;
      end;
      if Edit9.Text <>'then
      begin
        s := Edit9.Text + '%';
        ParamByName ('artikelnr').AsString := s;
      end;
      if Edit10.Text <>'then
      begin
        s := Edit10.Text + '%';
        ParamByName ('fehler').AsString := s;
      end;
      if Edit11.Text <>'then
      begin
        s := Edit11.Text + '%';
        ParamByName ('fehlernr').AsString := s;
      end;
      if Edit12.Text <>'then
      begin
        s := Edit12.Text + '%';
        ParamByName ('status').AsString := s;
      end;
      if Edit13.Text <>'then
      begin // Hier könnte nun der Fehler folgen
        if (Edit13.Text = 'True') or (Edit13.Text = 'true') or (Edit13.Text = 'ja') or (Edit13.Text = 'Ja') then ParamByName ('getauscht').AsBoolean := True;
        if (Edit13.Text = 'False') or (Edit13.Text = 'false') or (Edit13.Text = 'nein') or (Edit13.Text = 'Nein') then ParamByName ('getauscht').AsBoolean := False;
      end;
      if Edit14.Text <>'then
      begin
        ParamByName ('datum').AsDate := StrToDate(Edit14.Text);
      end;
      if Edit15.Text <>'then
      begin
        ParamByName ('datum').AsDate := StrToDate(Edit15.Text);
      end;
      if Edit16.Text <>'then
      begin
        s := Edit16.Text + '%';
        ParamByName ('lieferantennr').AsString := s;
      end;
      if Edit17.Text <>'then
      begin
        s := Edit17.Text + '%';
        ParamByName ('kundennr').AsString := s;
      end;
      if Edit18.Text <>'then
      begin
        ParamByName ('datum').AsDate := StrToDate(Edit18.Text);
      end;
      active := true;
      open;
     end;
    end;
end;

In dieser Procedure wird der String gebastelt

Delphi-Quellcode:
procedure TForm1.FindSQL(Sender: TObject);
var setzmerker :boolean;
begin
 setzmerker:= False;
 sqlmerker := 'SELECT * FROM retouren WHERE ';
 if Edit5.Text <>'then
  begin
    Sqlmerker := sqlmerker + '(Retourennummer LIKE :retnr) ';
    setzmerker := True;
  end;
 if Edit6.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Lieferant LIKE :lieferant) else
    begin
      sqlmerker := sqlmerker + '(Lieferant LIKE :lieferant) ';
      setzmerker := True;
    end;
  end;
  if Edit7.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Kunde LIKE :kunde) else
    begin
      sqlmerker := sqlmerker + '(Kunde LIKE :kunde) ';
      setzmerker := True;
    end;
  end;
  if Edit8.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Artikel LIKE :artikel) else
    begin
      sqlmerker := sqlmerker + '(Artikel LIKE :artikel) ';
      setzmerker := True;
    end;
  end;
  if Edit9.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Artikelnummer LIKE :artikelnr) else
    begin
      sqlmerker := sqlmerker + '(Artikel LIKE :artikelnr) ';
      setzmerker := True;
    end;
  end;
  if Edit10.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Fehlerbeschreibung LIKE :fehler) else
    begin
      sqlmerker := sqlmerker + '(Fehlerbeschreibung LIKE :fehler) ';
      setzmerker := True;
    end;
  end;
  if Edit11.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Fehlernummer LIKE :fehlernr) else
    begin
      sqlmerker := sqlmerker + '(Fehlernummer LIKE :fehlernr) ';
      setzmerker := True;
    end;
  end;
  if Edit12.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Status LIKE :status) else
    begin
      sqlmerker := sqlmerker + '(Status LIKE :status) ';
      setzmerker := True;
    end;
  end;
  if (Edit13.Text = 'True') or (Edit13.Text = 'true') or (Edit13.Text = 'ja') or (Edit13.Text = 'Ja')
      or (Edit13.Text = 'False') or (Edit13.Text = 'false') or (Edit13.Text = 'nein') or (Edit13.Text = 'Nein') then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Getauscht LIKE :getauscht) else
    begin
      sqlmerker := sqlmerker + '(Getauscht LIKE :getauscht) ';
      setzmerker := True;
    end;
  end;
  if Edit14.Text <>'then
  begin
    Edit15.Text :='';
    Edit18.Text :='';
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Datum <= :datum) else
    begin
      sqlmerker := sqlmerker + '(Datum <= :datum) ';
      setzmerker := True;
    end;
  end;
  if Edit15.Text <>'then
  begin
    Edit18.Text := '';
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Datum >= :datum) else
    begin
      sqlmerker := sqlmerker + '(Datum >= :datum) ';
      setzmerker := True;
    end;
  end;
  if Edit16.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Lieferantennummer LIKE :lieferantnr) else
    begin
      sqlmerker := sqlmerker + '(Lieferantennummer LIKE :lieferantnr) ';
      setzmerker := True;
    end;
  end;
  if Edit17.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Kundennummer LIKE :kundennr) else
    begin
      sqlmerker := sqlmerker + '(Kundennummer LIKE :kundennr) ';
      setzmerker := True;
    end;
  end;
  if Edit18.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Datum = :datum) else
    begin
      sqlmerker := sqlmerker + '(Datum LIKE :datum) ';
      setzmerker := True;
    end;
  end;
end;
Danke für Eure Hilfe
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat