Autor Beitrag
Mandi Nice
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win2K, XP, CE
Delphi 2006 Prof.
BeitragVerfasst: So 06.12.09 22:35 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: 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

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Mandi Nice Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win2K, XP, CE
Delphi 2006 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 10.12.09 19:58 
Hi,

also so hab ich das nie gemacht.

Ich hab immer den ADOConnector verwendet.

Xion

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)