![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery TDataSource
SQL ABFRAGE BOOLEAN
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:
Danke für Eure Hilfe
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; |
Re: SQL ABFRAGE BOOLEAN
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 |
Re: SQL ABFRAGE BOOLEAN
Pushen von Beiträgen nach einer Stunde ist nicht gerade die feine Art. :warn:
Es werden auch Antworten auf Fragen gegeben, welche Älter als 1h sind bzw. manch ein Spezialist ist um die Uhrzeit nicht Online. |
Re: SQL ABFRAGE BOOLEAN
Guten Morgen,
mir kommt ja der folgende Vergleich spanisch vor. Zitat:
Niels |
Re: SQL ABFRAGE BOOLEAN
Wie wäre es mit etwas in der Art:
SQL-Code:
BTW: Gefunden in der OH zur lokalen SQL (LOCALSQL.HLP)!
SELECT *
FROM Transfers WHERE (Paid = TRUE) AND NOT (Incomplete = "False") |
Re: SQL ABFRAGE BOOLEAN
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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-2025 by Thomas Breitkreuz