Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#1

Access CommandText zuweisen dauert 10 Sekunden

  Alt 26. Sep 2009, 12:16
Datenbank: MS-Access • Version: 2003 • Zugriff über: Ado; Treiber: MS-Jet OLEDB 4.0
Eine Frage an alle, die mit Delphi auf eine Access-Datenbank zugreifen:

Gegeben ist eine Adress-Datenbank mit 16 Feldern und 10.000 Einträgen. Beim Suchen werden relevante Datensätze selektiert, in der Tabelle (DBgrid) werden auch nur die selektierten Datensätze angezeigt und zusätzlich eine CheckBox "nur Suchergebnisse anzeigen" gechecked. Besser gesagt: Erst in der Ereignisbehandlung "OnClick" dieser Checkbox weise ich den CommandText der AdoDataSet-Komponente zu:
Delphi-Quellcode:
DatMod.Aset_Adress.Active := FALSE;
IF Check_Suchanzeige.Checked
THEN DatMod.Aset_Adress.CommandText := SuchFilter
ELSE DatMod.Aset_Adress.CommandText := DefaultFilter;
DatMod.Aset_Adress.Active := TRUE;
Das funktioniert alles bestens, die Resultate sind einwandfrei, keine Fehlermeldungen wegen falscher SQL-Statements usw. Doch das Rücksetzen (DefaultFilter), das mit dem Entfernen des Hakens in der CheckBox ausgelöst wird, dauert gute 10 Sekunden (bei einem Intel Double-Core-Rechner mit insges. 7 GHz). SuchFilter und DefaultFilter sind Widestrings, die den CommandText enthalten. Erstgenannte Variable enthält den CommandText für die Selektion (Select Adress.Name, Adress.Vorname usw. FROM ... WHERE ...) und DefaultFilter einfach nur "Select * FROM Adress".

Mich interessiert nun, ob diese unerträglich lange Zeit von 10 Sekunden, die benötigt wird, um wieder alle Einträge anzuzeigen, an MS-Access liegt oder ob ich etwas falsch/umständlich mache und das beschleunigen könnte.

Ich danke schon mal im Voraus für eure wertvollen Hinweise.
  Mit Zitat antworten Zitat