Entwickler-Ecke

Datenbanken - Reaktionszeit sehr lang ADO


Mandi Nice - So 06.12.09 22:35
Titel: Reaktionszeit sehr lang ADO
Hallöchen

Ich stellen in einem DBGrid die Daten einer AccessTabelle dar.
Der Zugriff erfolgt über TADOTable und TDatasource.

Von einer anderen Stelle im Programm werden Daten aus einer Textdatei eingelesen und über einen zweiten TADOTable und TDatasource in die AccessTabelle eingetragen.

Es dauert nun sehr lange ( >= 4 Sekunden ) bis die Daten nach einem Requery in dem DBGrid angezeigt werden können .
( Die Datenbank befinded sich auf dem selben PC )


Kann man den Vorgang beschleunigen ?
Oder ist eine andere Datenbank schneller ?

Vielen Dank für Eure Hilfe.

hmg
Mandi


Xion - Do 10.12.09 09:06

Hi,

ich hab schon paar Sachen mit ADO programmiert und es war immer schnell genug...

Am besten zeigst du mal etwas Code, ich kann nur raten. Evtl würde es etwas bringen, vor dem einlesen der Daten die Verbindung zwischen Grid und Table zu trennen...wie gesagt, zeige mal etwas Source-Code. Evtl liegts ja auch am einlesen der Datei?

Xion


Mandi Nice - Do 10.12.09 11:37

Hallöchen

Danke für die Antwort.
Ich denke aber es liegt am Caching von der Access Datenbank.

Ich versuche nun den Cache mit folgenden Code zu aktualisieren:

------------------------------
uses JRO_TLB, ADOInt, ADODB_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var aJet : IJetEngine;
aConn : _Connection;

begin
aJet := CoJetEngine.Create;
aConn := ADODB_TLB._Connection(ADOTable1.Connection.ConnectionObject);
aJet.RefreshCache(ADODB_TLB._Connection(aConn));
end;

------------------------------------

Bekommen aber immer eine Schutzverletzung in dieser Zeile :

aConn := ADODB_TLB._Connection(ADOTable1.Connection.ConnectionObject);

ADOTable1 ist mit dem DBGrid verbunden. Es werden Daten angezeigt also ist die Verbindung geöffnet.


Verwende ich das falsche ConnectionObject ?
Woher bekomme ich das "Richtige" ?


hmg
Mandi


Xion - Do 10.12.09 19:58

Hi,

also so hab ich das nie gemacht.

Ich hab immer den ADOConnector verwendet.

Xion