Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

VST - schnelle Suche über 42000 Datensätze

  Alt 17. Sep 2010, 12:40
Moin zusammen,

mit diesen beiden Proceduren, filtere ich über ein VST. Die Proceduren stammen aus dem VST Videotutorial vom Stammtisch. Die Daten liegen in einer Klasse TOData.
Delphi-Quellcode:
procedure Tfrm_main.edt_searchChange(Sender: TObject);
begin
 vst_daten.IterateSubtree(nil, SearchDataCallback, nil);
end;

procedure Tfrm_main.SearchDataCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
 Daten : TOData;
begin
 Daten := TOData(vst_daten.GetNodeData(Node)^);
 vst_daten.IsVisible[node] := (edt_search.Text = '')
                                or (pos(LowerCase(edt_search.Text), LowerCase(Daten.suchfeld)) > 0);
end;
Ich lese Daten aus einer Textdatei aus und stelle sie ins VST. Das geht verdammt schnell
Sobald man im Editfeld etwas einträgt, schaut er ins VST und lässt nur noch die Datensätze sichtbar, die dem Suchbegriff entsprechen. Siehe Prozeduren.

Bei einer Datenmenge von ca. 2000 geht die Aktualisierung der VST Ansicht noch recht schnell. Aber bei 42000 Datensätzen ist die Aktualisierung des VSTs sehr langsam und träge und der Benutzer muss auf die weitere Eingabe ins Editfeld warten.

Wie könnte man den Filter optimieren? Welche Möglichkeiten biete das VST?

Eventuelle Alternative (keine Ahnung, ob es geht): Daten in ein DataSet zu laden, und dann mit SQL Befehlen zu filtern.

Danke im Voraus
Sven
  Mit Zitat antworten Zitat