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
Antwort Antwort
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
GoTo0815

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

Re: SQL ABFRAGE BOOLEAN

  Alt 31. Mär 2005, 18:20
Vielleicht habe ich mich undeutlich ausgedrückt:

Ich suche nach einer Möglichkeit in einer Datenbank mittels SQL nach einem Boolschen Wert sortieren (True oder False)

Wir muss ich den Parameter dazu definieren?

Gruß

Hendrik
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: SQL ABFRAGE BOOLEAN

  Alt 31. Mär 2005, 18:22
Pushen von Beiträgen nach einer Stunde ist nicht gerade die feine Art.
Es werden auch Antworten auf Fragen gegeben, welche Älter als 1h sind bzw. manch ein Spezialist ist um die Uhrzeit nicht Online.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#4

Re: SQL ABFRAGE BOOLEAN

  Alt 1. Apr 2005, 08:14
Guten Morgen,
mir kommt ja der folgende Vergleich spanisch vor.

Zitat:
sqlmerker := sqlmerker + '(Getauscht LIKE :getauscht) ';
Hier würde ich kein LIKE verwenden, das ja eine Konvertierung in einen String bewirkt sondern direkt mit Gleichheitszeichen arbeiten.

Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5

Re: SQL ABFRAGE BOOLEAN

  Alt 1. Apr 2005, 09:12
Wie wäre es mit etwas in der Art:
SQL-Code:
SELECT *
FROM Transfers
WHERE (Paid = TRUE) AND NOT (Incomplete = "False")
BTW: Gefunden in der OH zur lokalen SQL (LOCALSQL.HLP)!
  Mit Zitat antworten Zitat
GoTo0815

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

Re: SQL ABFRAGE BOOLEAN

  Alt 4. Apr 2005, 16:24
ja natürlich!!!! Danke vielmals. Habe den Wald vor lauter Bäumen nicht gesehen.

Habe einfach die Zeilen kopiert und dabei nicht bei der SYNTAX aufgepasst.

Danke es läuft nun wunderbar mit einem '=' statt dem 'like'.

Danke

Gruß

Hendrik
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz