Die Frage ist halt, wie man das ganze dynamisch am un-aufwendigsten darstellt. Folgender Denkanstoss hilft dir vielleicht.
Das Gröbste der Query steht ja immer fest:
Quelltext
1:
| SELECT * FROM database WHERE |
Daran ändert sich ja eigentlich nichts. Dann kommt die Definition der eigentlichen Suchkriterien
Quelltext
1: 2: 3: 4: 5:
| feld1 = wert1 OR feld2 = feld2 OR feldn = feldn |
Nun wären 2 ListBoxen angebracht. Einmal eine, in der die Felder der Tabelle dargestellt werden, und einmal die ListBox für die Felder, die durchsucht werden sollen.
Der User doppelklickt auf ein DB-Feld, das wird in unserer 2. Listbox angezeigt, und im Final durchsucht.
In einer kleinen Schleife, die abhängig von der Anzahl der 2. Listbox durchlaufen wird, füllen wir unser SQL-Statement. Strukturell sähe das ganze dann so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Query.SQL.Text := 'SELECT * FROM dbase WHERE ' + listbox2.item(1) + ' LIKE ' + edit1.Text;
FOR i := 1 TO listbox2.Items.Count - 1 do begin SQL.Query.Add ( ' OR ' + listbox2.item(i) + ' LIKE ' + edit1.text); end; Query.Open; |
Wenn du jetzt magst, kannst du auch das OR noch durch eine Variable ersetzen, damit der Anwender die Möglichkeit zwischen AND und OR zu wählen. Ansonsten brauchst du das bloss an deine Bedürfnisse anpassen, noch die IF-Abfragen einbauen, um abzupassen, ob die Listbox überhaupt gefüllt ist, bzw. mehr als 2 Felder enthält. Und fertig ist das ganze. Hoffe das ist ungefähr das was du meinst
ki