Zitat von
Hansa:
Zitat von
Igotcha:
- für jedes Eingabeobjekt der Suchmaske (TEdit, TComboBox) wird ein "SearchItem"-Objekt erstellt
- diesem Objekt wird das entsprechende TWinControl und die Art der Information (Text-oder Zahlauswertung [z.B. Itemindex]) mitgegeben
Jetzt erkläre mir mal, warum TObject, TwinControl gebraucht werden, um lediglich einen simplen string zusammenzusetzen.
Delphi-Quellcode:
mySearchItem:=TSearchItem.Create;
mySearchItem.FComponent:=Edit1;
mySearchItem.FDBField:='
nachname';
mySerachItem.FType:=0;
// Abfrage als Text
mySearchList.Add(mySearchItem);
mySearchItem:=TSearchItem.Create;
mySearchItem.FComponent:=ComboBox1;
mySearchItem.FDBField:='
titel';
mySerachItem.FType:=1;
// Abfrage als Zahl
mySearchList.Add(mySearchItem);
Query.SQL.Text:='
SELECT * FROM table '+CreateSQLWhereClause(mySearchList);
mySearchList.free;
Text der
SQL-
Query:
SELECT * FROM table WHERE nachname='
TextausEdit1'
AND titel=2
// 2=ItemIndex aus ComboBox, bei Typ=0, Text aus ComboBox
Der Vorteil ist, dass man dieses Verfahren generisch für Suchmasken verwenden kann. Ich habe
eine Funktion, die mir für alle meine Suchmasken den korrekten "WHERE"-Teil erstellt, die ich parametrisieren kann (z.B. bei Comboboxen zeige mir den Text oder den Itemindex) und wo ich die Suchmaske selbst problemlos erweitern kann, ohne die Funktion zur Generierung des "WHERE"-Teils anzupassen bzw. zu erweitern.
Vielleicht sollte ich nochmal erwähnen, dass meine Suchmasken zwischen 5-15 Filterkriterien anbieten und an Suchmasken habe ich so an die 10 Stück.
Gruß Igotcha