Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Start der Anwendung dauert ewig, 13000 Datensätze im Grid (https://www.delphipraxis.net/20169-start-der-anwendung-dauert-ewig-13000-datensaetze-im-grid.html)

Gambit 14. Apr 2004 11:17


Start der Anwendung dauert ewig, 13000 Datensätze im Grid
 
Hallo,
ich habe eine Datenbank mit 13000 Datensätzen. Beim Start der Anwendung sollen 10 Datensätze in einem Grid angezeigt werden. Wenn ich nun eine ADOQuery oder ein ADODataSet nehme und beim Start der Anwendung als SQL-Statement
SQL-Code:
Select * from tbl_test
nehme, dauert es ewig, bis die Anwendung überhaupt startet. Kann man das anders machen?

Gruß

Gambit

Delphi_Fanatic 14. Apr 2004 11:32

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
Dann beschränk' doch den Query auf eine Anzahl von einigen 100 Datensätzen.

Es ist eigentlich auch nicht üblich, gleich eine komplette Tabelle in einem Grid zu halten.
Was machst Du, wenn die Tabelle erstmal 100.000 oder gar 1.000.000 Datensätze enthält ?
Der normale Weg ist da eigentlich immer der, dass man sich nur eine bestimmte Auswahl von
Datensätzen in einem Grid anzeigen lässt.

Bedenke : Wenn Du z.B. eine Access-DB verwendest und eine Datenmenge von 13.000 Sätzen
öffnest, dann wird auch automatisch eine Kopie dieser Datenmenge über's Netz auf
den lokalen PC kopiert. Da dürfte die lange Wartezeit beim Starten kaum verwunderlich sein.

In Deinem ADODataSet gibt es eine Eigenschaft namens "CursorLocation". Wenn Du da "UseClient"
angibst, dann arbeit Dein PGM in dieser temporär erzeugten lokalen Kopie Deiner Datenmenge.
Bei "UseServer" arbeitet er eben direkt auf der DB im Netz, was bei Access nur mit Einschränkungen
funkioniert. Da wäre dann schon ein 'richtiger' Server angebracht.

Gambit 14. Apr 2004 11:48

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
Ich hatte auch schon daran gedacht, die Anzahl der Datensätze zu beschränken. Aber wie funzt das dann mit dem Scrollen? Man muss das ja dann irgendwie so machen, dass wenn man beim letzten Datensatz angekommen ist, man die nächsten beispielsweise hundert nachläd.
Ich wundere mich immer wie das geht, ich habe hier zB. eine Programm zur Verwaltung von CDs. Dort gibt es auch eine Suchfunktion nach Titeln. Ruft man das auf, werden in einem Grid sofort 10 Datensätze angezeigt. Giebt man im Suchfeld meinetwegen ein "d" ein, werden sofort und ohne Verzögerung die Titel im Grid angezeigt, die mit diesem Buchstaben beginnen(select * from tbl where Titel like 'd%' würde viel zu lange dauern), wenn man dann weiter ein "a" angiebt, alle Titel mit "Das" usw. Runterscrollen geht auch wunderbar. Wie wird sowas realisiert?

gruß

Gambit

Memo 14. Apr 2004 17:37

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
Zitat:

Zitat von Gambit
Ich hatte auch schon daran gedacht, die Anzahl der Datensätze zu beschränken. Aber wie funzt das dann mit dem Scrollen? Man muss das ja dann irgendwie so machen, dass wenn man beim letzten Datensatz angekommen ist, man die nächsten beispielsweise hundert nachläd.

Du könntest mit LIMIT einschränken, wenn letzter erreicht LIMIT erhöhen.
Zitat:

Zitat von Gambit
Ich wundere mich immer wie das geht, ich habe hier zB. eine Programm zur Verwaltung von CDs. Dort gibt es auch eine Suchfunktion nach Titeln. Ruft man das auf, werden in einem Grid sofort 10 Datensätze angezeigt. Giebt man im Suchfeld meinetwegen ein "d" ein, werden sofort und ohne Verzögerung die Titel im Grid angezeigt, die mit diesem Buchstaben beginnen(select * from tbl where Titel like 'd%' würde viel zu lange dauern), wenn man dann weiter ein "a" angiebt, alle Titel mit "Das" usw. Runterscrollen geht auch wunderbar. Wie wird sowas realisiert?

Du solltest Dein Grid in jedemfall vor einer Abfrage disablen, daß erhöht die Geschwindigkeit dramatisch.

Gambit 14. Apr 2004 18:26

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
Danke!! könntest du mir das mit dem LIMIT nochmal etwas genauer erklären?

Gruß

Gambit

Memo 14. Apr 2004 18:39

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
SQL-Code:
select * from Tabelle LIMIT 1,20

Gambit 14. Apr 2004 18:44

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
habe gerade mal einen kleinen Test gemacht:

Mit folgender Routine:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DBGrid1.Enabled:=false;
  ADODataSet1.Close;
  ADODataSet1.CommandText:= 'Select * from tbl_test';
  ADODataSet1.Open;
  DBGrid1.Enabled:=true;
end;
braucht es 50 Sekunden, bis im Grid überhaupt was angezeigt wird. Das kanns ja wohl echt nicht sein...

Wie das mit dem LIMIT jetzt genau umzusetzen sein soll, kann ich auch noch nicht so richtig nachvollziehen. Wenn ich den letzten Datensatz im Grid erreicht habe ne neue Select Anweisung mit erhöhtem LIMIT?

Gruß

Gambit

Memo 14. Apr 2004 18:50

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
Zitat:

Zitat von Gambit
habe gerade mal einen kleinen Test gemacht:

Entschuldigung ich habe mich wohl etwas mißverständlich ausgedrückt. Versuch mal so:
Bsp. :
Delphi-Quellcode:
Table.DisableControls

Gambit 14. Apr 2004 18:55

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
jo, bringt aber auch nix...aber gehen muss es irgendwie. Das Programm, welches ich oben erwähnte ist auch in Delphi geschrieben...wobei das ja nicht so der springende Punkt sein sollte...

Gambit

Memo 14. Apr 2004 19:04

Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
 
Zitat:

Zitat von Gambit
Wie das mit dem LIMIT jetzt genau umzusetzen sein soll, kann ich auch noch nicht so richtig nachvollziehen. Wenn ich den letzten Datensatz im Grid erreicht habe ne neue Select Anweisung mit erhöhtem LIMIT?

Wenn der letzte Datensatz erreicht LIMIT durch neuen Select setzen.
Zitat:

jo, bringt aber auch nix...aber gehen muss es irgendwie. Das Programm, welches ich oben erwähnte ist auch in Delphi geschrieben...wobei das ja nicht so der springende Punkt sein sollte...
:gruebel: Damit kann ich im Augenblick nichts anfangen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz