11. April 2007 18:22
Hallo,
mit folgender Funktion möchte ich die Tabelle Debitor durchsuchen.
Abhängig vom eingegebenem Text (Input) wird sowohl das Feld "Name" als auch "Name 2" durchsucht und ggf. markiert.
Dann wird die Form 22 geöffnet und es werden mit Hilfe von Markedonly nur die markierten Datensätze angezeigt.
- Code:
WITH Debitor DO BEGIN
RESET;
SETCURRENTKEY(Name,"Name 2",Ort);
IF FIND('-') THEN BEGIN
REPEAT
MARK := (STRPOS(Name, UPPERCASE(Input)) <> 0) OR (STRPOS("Name 2", UPPERCASE(Input)) <> 0);
UNTIL NEXT = 0;
END;
MARKEDONLY := TRUE;
IF FIND('-') THEN BEGIN
IF FORM.RUNMODAL(22,Debitor) = ACTION::LookupOK THEN
Nr := Debitor."Nr."
ELSE
Nr := '';
END;
END;
Theoretisch läuft´s, aber leider nur sehr langsam. Lasse ich Markedonly weg, ist die Form auch wieder gewohnt schnell, sie zeigt dann natürlich halt alle Datensätze, die markierten und die nicht markierten.
Also kann es nur an der Zeile Markedonly liegen.
Hat jemand einen Tip, wie ich meine Idee umsetzen kann? Sprich nur die markierten Datesätze schneller anzeigen lassen kann?
Eine Alternative hab ich auch probiert:
Ich habe die gefunden Datensätze temporär gespeichert und dann die Temp.Tabelle anzeigen lassen.
Damit hab ich keine Geschwindigkeitsprobleme, aber ich kann leider auch später nicht alle Datensätze anzeigen lassen und ggf. neue Filter setzten, indem ich den Filter auflöse. Ist auch logisch, denn die Temp.Tabelle hat ja auch nicht alle Datensätze der Debitortabelle.
Also beide Varianten haben entscheidene Nachteile, die ich alleine scheinbar nicht lösen kann. Optimal wäre die Lösung mit Markedonly.
Danke im Voraus für eure Hilfe.
Zuletzt geändert von Dune am 12. April 2007 08:32, insgesamt 1-mal geändert.