Hallo,
ich habe ein Form auf dem man nach Rechnungen Suchen kann. Diese werden durch ein VIEW dargestellt.
Nun habe ich drei (sollen evtl. noch mehr werden) Suchfelder:
- Edit1 -> Rechnungsnummer
- Edit2 -> Kundennummer
- Edit3 -> Kundenname
Leider funkt. das ganze nur sehr umständlich. Hier mein akt. Code:
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: 30: 31: 32: 33: 34: 35: 36: 37:
| if (edit1.Text='') and (edit2.Text='')and (edit3.Text='') then begin sql.Text:='Select * from kasse_view_rechnung'; open; exit; end;
if ((edit1.Text<>'') and (edit2.Text='')and (edit3.Text='')) or ((edit1.Text='') and (edit2.Text<>'')and (edit3.Text='')) or ((edit1.Text='') and (edit2.Text='')and (edit3.Text<>'')) then begin sql.Text:='Select * from kasse_view_rechnung where (renr like :wertrenr) or (kdnr like :wertkdnr) or (kunden_name like :wertkdname)';
if edit1.Text<>'' then parambyname('wertrenr').Asstring := edit1.Text+'%' else parambyname('wertrenr').Asstring := edit1.Text; if edit2.Text<>'' then parambyname('wertkdnr').Asstring := edit2.Text + '%' else parambyname('wertkdnr').Asstring := edit2.Text; if edit3.Text<>'' then parambyname('wertkdname').Asstring := edit3.Text+'%' else parambyname('wertkdname').Asstring := edit3.Text; open; exit; end; if ((edit1.Text<>'') and (edit2.Text<>'')and (edit3.Text='')) then sql.Text:='Select * from kasse_view_rechnung where (renr like :wertrenr) and (kdnr like :wertkdnr) or (kunden_name like :wertkdname)'; if ((edit1.Text<>'') and (edit2.Text='')and (edit3.Text<>'')) then sql.Text:='Select * from kasse_view_rechnung where (renr like :wertrenr) and (kunden_name like :wertkdname) OR (kdnr like :wertkdnr)'; if ((edit1.Text='') and (edit2.Text<>'')and (edit3.Text<>'')) then sql.Text:='Select * from kasse_view_rechnung where (renr like :wertrenr) OR (kdnr like :wertkdnr) AND (kunden_name like :wertkdname)'; if edit1.Text<>'' then parambyname('wertrenr').Asstring := edit1.Text+'%' else parambyname('wertrenr').Asstring := edit1.Text; if edit2.Text<>'' then parambyname('wertkdnr').Asstring := edit2.Text + '%' else parambyname('wertkdnr').Asstring := edit2.Text; if edit3.Text<>'' then parambyname('wertkdname').Asstring := edit3.Text+'%' else parambyname('wertkdname').Asstring := edit3.Text; open; |
Ist so natürlich nicht schön. Wenn ich die Rechnungsnummer außen vor lasse, funktioniert alles einwandfrei.
Wenn ich ansonsten das ganze nicht wie oben aufbau, dann wird entweder gar nix angezeigt, wenn alle Suchfelder leer sind, oder es wird nix angezeigt, wenn ich eines oder mehrere Felder ausfülle.
Was mache ich hier falsch??
P.S.: renr und kdnr sind INTEGER und kunden_name ist VARCHAR
Danke schonmal für Hilfen und Tips.
Gruß Cyberax