Autor Beitrag
Gunter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 27.09.03 22:49 
Hi,

ich habe ein Problem mit der Datenbank Advantage Local Server von Extended Systems und zwar, wenn ich mein Programm das erste mal, nach dem Neustart meines Systems starte und dann auf die Datenbank (ca. 1,6 Mio Einträge zugreife) dauert das ziemlich lange (1-2 Minuten). Mir scheint es so, als ob Advantage irgendwelche Daten in den Ram oder Tempdatei laden würde, weil, wenn ich mein Proramm schliesse und dann erneut auf die Datenbank zugreife, ist sie sofort verfügbar. Weiß jemand wie ich dieses Problem umgehen kann?

Ich habe zuvor mal die Datenbank Flashfiler probiert, aber mit der hatte ich immer das Problem, dass ich da sehr häufig den Fehler "Block read from file is not an index block" bekommen habe. Da hatte ich die Verion 2.13, also die man bei Sourceforge bekommt, genommen. Vielleicht gibt's ja dafür eine einfachere Lösung um das Problem zu lösen.

Oder vielleicht kann mir jemand eine ganz andere Datenbank empfehlen, es soll auf jeden Fall ein "Single-Exe"-Applikation werden und die Datenbank sollte nach Möglichkeit kostenlos sein und muss so mit ca. 2 Millionen Datensätzen zurecht kommen.

schonmal vielen Dank
Gunter
hwb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91

Win98 SE, Win2000
D5 Prof
BeitragVerfasst: So 28.09.03 19:57 
Also so ganz mitreden kann ich da nicht, bei 400000 Datensätzen in der größten Tabelle ist z. Zt. bei uns Ende, und das auf dem Server.

Aber mal Frage: Liest du ALLE Datensätze ein ?!?.

Hans
Gunter Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 29.09.03 09:21 
ok, ich habe jetzt herausgefunden, warum das so lange dauert und zwar verwende ich in meinem Programm eine virtuelle TListView und am Anfang sage ich der wie viele Einträge sie haben soll.
Das hatte ich mit listview1.itemx.count:=tadstable1.recordcount; gemacht. logischerweise geht dafür die Datenbank alle Einträge durch.

Gibt es eine bessere Methode an die Anzahl der Einträge zu kommen, vielleicht irgendwie über den Header der Datenbank?

Gunter
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 29.09.03 10:55 
Hallo,

dafür dürfte die Datenbank nicht durchgegangen werden. Aber tListView ist recht langsam beim anlegen neuer Items, selbst wenn du BeginUpdate aktiviert hast, vieleicht solltest du da eine Alternative suchen.
Ausprobieren kannst du das ganze ja indem du dein:
ausblenden Delphi-Quelltext
1:
listview1.itemx.count:=tadstable1.recordcount;					

mal in
ausblenden Delphi-Quelltext
1:
listview1.itemx.count:=1600000;					

änderst und guckst ob das dann schneller ist.

Gruß
Klabautermann
Gunter Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 29.09.03 17:20 
ok, hab's jetzt.
Wenn man den Index erst reinhaut, wenn man die Anzahl der Einträge ausgelesen hat geht's
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 01.10.03 14:33 
Hallo,
Gunter hat folgendes geschrieben:
Wenn man den Index erst reinhaut, wenn man die Anzahl der Einträge ausgelesen hat geht's

verstehe ich nciht ganz, welchen Index?
Kanst' mich mal aufklähren?

Gruß
Klabautermann