AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL ABFRAGE BOOLEAN

Ein Thema von GoTo0815 · begonnen am 31. Mär 2005 · letzter Beitrag vom 4. Apr 2005
 
GoTo0815

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

SQL ABFRAGE BOOLEAN

  Alt 31. Mär 2005, 18: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz