commin hat folgendes geschrieben: |
Hallo,
ich habe folgendes Problem:
Ich möchte eine Datenbank nach mehreren Schlagwörtern duchsuchen (Suchfunktion) - zur Zeit klappt das mit folgenden Text für einen Suchbegriff:
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:
| for i:= i+1 to form1.table1.RecordCount do begin smemo:=dbmemo1.text; stitel:=dbedit1.text; sbtitel:=dbedit2.text; sautor:=dbedit3.text; sregion:=dbedit4.text; szeit:=dbedit5.text;
if POS(LowerCase(stichw), LowerCase(smemo)) <> 0 then ok:=true; if POS(LowerCase(stichw), LowerCase(stitel)) <> 0 then ok:=true; if POS(LowerCase(stichw), LowerCase(sbtitel)) <> 0 then ok:=true; if POS(LowerCase(stichw), LowerCase(sautor)) <> 0 then ok:=true; if POS(LowerCase(stichw), LowerCase(sregion)) <> 0 then ok:=true; if POS(LowerCase(stichw), LowerCase(szeit)) <> 0 then ok:=true; if ok=true then sucherg.showmodal; if endsuch='true' then exit; ok:=false; form1.table1.next; gauge1.progress:=i; sucherg.gauge1.progress:=i; end; |
Aber ich stehe ein wenig vor einem Rätsel wie ich dass auf meherere Anwenden kann....
|
Du bist Dir schon bewusst, dass das da oben bei grossen Tabellen ziemlich langsam wird?
Zu Deiner Frage: Ich wuerde erstmal den Code zum ueberpruefen, ob das Stichwort im aktuellen Datensatz steht, in eine Funktion auslagern. Wenn das passiert ist, rufst Du die Funktion einfach zweimal auf:
Quelltext
1: 2: 3: 4:
| if SucheNach('hallo') then goto gefunden; if SucheNach('trallala') then goto gefunden; |
(Die Gotos solltest Du nicht ernst nehmen, sie dienen nur der Verdeutlichung, sind aber kein guter Programmierstil.)
twm