![]() |
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:
nehme, dauert es ewig, bis die Anwendung überhaupt startet. Kann man das anders machen?
Select * from tbl_test
Gruß Gambit |
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. |
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 |
Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
Zitat:
Zitat:
|
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 |
Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
SQL-Code:
select * from Tabelle LIMIT 1,20
|
Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
habe gerade mal einen kleinen Test gemacht:
Mit folgender Routine:
Delphi-Quellcode:
braucht es 50 Sekunden, bis im Grid überhaupt was angezeigt wird. Das kanns ja wohl echt nicht sein...
procedure TForm1.Button1Click(Sender: TObject);
begin DBGrid1.Enabled:=false; ADODataSet1.Close; ADODataSet1.CommandText:= 'Select * from tbl_test'; ADODataSet1.Open; DBGrid1.Enabled:=true; end; 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 |
Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
Zitat:
Bsp. :
Delphi-Quellcode:
Table.DisableControls
|
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 |
Re: Start der Anwendung dauert ewig, 13000 Datensätze im Gri
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr. |
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