Folgende Problemstellung habe ich - recht unschön - gelöst:
Es gibt 3 Auswahlfelder (ComboBoxen):
Marke (z.B. BMW, Toyota, etc.)
Typ (z.B. SUV, Karavan, NULL, etc.)
Anz_Tueren (z.B. 4, 5, NULL)
Der Anwender soll aus den drei ComboBoxen auswählen, und das Ergebnis im Grid angezeigt bekommen, also z.B. alle BMW mit 5 Türen. In den Comboboxen stehen jeweils alle Eintragungen, z.B. alle Auto-Marken in CBMarke. Die vom benutzer ausgewählte Marke ist dann Marke (=CBMarke.Text).
Die Frage die ich habe ist, ob man das nicht eleganter lösen könnte. Hier mein derzeitiger Ansatz:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| var Marke, Typ, Anz_Tueren: String;
begin Marke:=UID.CBMarke.Text; Typ:=UID.CBTyp.Text; Anz_Tueren:=UID.CBAnz_Tueren.Text;
DM.IBDS_Grid.Close; DM.IBDS_Grid.SelectSQL.Clear; DM.IBDS_Grid.SelectSQL.Add('SELECT * FROM VMZ'); if ((Marke <> '') or (Typ <> '') or (Nummer <> '')) then DM.IBDS_Grid.SelectSQL.Add('WHERE');
if (Marke <> '') then begin DM.IBDS_Grid.SelectSQL.Add('MARKE= '''+Marke+''''); if ((Typ <> '') or (Anz_Tueren <> '')) then DM.IBDS_Grid.SelectSQL.Add('and'); end;
if (Typ <> '') then begin DM.IBDS_Grid.SelectSQL.Add('Typ= '''+Typ+''''); if (Anz_Tueren <> '') then DM.IBDS_Grid.SelectSQL.Add('and'); end;
if (Anz_Tueren <> '') then DM.IBDS_Grid.SelectSQL.Add('ANZ_Tueren= '+Anz_Tueren+'');
DM.IBDS_Grid.Open; end; |
Moderiert von
matze: Code- durch Delphi-Tags ersetzt