Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi 5: Darstellung hängt bei längeren Abfragen (https://www.delphipraxis.net/56242-delphi-5-darstellung-haengt-bei-laengeren-abfragen.html)

Ulf346C 2. Nov 2005 18:30


Delphi 5: Darstellung hängt bei längeren Abfragen
 
Ich habe eine Datenbankanwendung mit großen Datenmengen in Arbeit.

Dabei kommt es vor, daß eine Suche mehrere Minuten dauert.
Solange ich selber damit arbeite kein Problem, aber es
sollen auch Andere das Tool nutzen.

Problem: während die Suche läuft, bekomme ich Delphi nicht
dazu, das Fenster korrekt zu aktualisieren.
Ich habe einen Counter eingebaut, der die Trefferquote anzeigt,
damit man auch sieht daß der PC noch etwas tut (..nicht abgestürzt ist)
Nach einiger Zeit hört Delphi 5 aber auf, den Bildschirm zu
aktualisieren. Auch eingefügte .refresh Befehle bringen nichts, selbst
wenn sie extrern über einen Timer aufgerufen werden.

*grübel*

Eichhoernchen 2. Nov 2005 18:33

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
Ich würd mir mal überlegen ob das Suchverfahren nicht vielleicht optimiert werden könnte..

Aber versuch es mal mit nem Application.ProcessMessage;
nach dem Refresh

Ulf346C 3. Nov 2005 13:51

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
die Suchroutine ist eingentlich ganz prima so wie sie ist ;)

Application.Processmessages habe ich schon versucht, das hilft aber nicht wirklich

supermuckl 3. Nov 2005 14:30

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
dann lager es doch in einen thread aus

Pfoto 4. Nov 2005 09:36

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
Ich hab in meiner Anwendung auch ein Fenster, das angezeigt, wie/welche Datensätze gerade gesucht/gefunden etc. werden.
Die Labels auf dem Fenster werden durch Application.ProcessMessages immer korrekt aktualisiert.

Vielleicht ist dein Suchprozess so aufwändig, dass ProcessMessages nicht mehr regelmäßig zum Zuge kommt und deshalb diese Aussetzer entstehen.

Auch wenn du davon überzeugt bist, eine optimale Suchroutine zu haben -- bei mehreren Minuten Abfragedauer müssten ja schon Millionen von Datensätzen vorliegen um diese lange Wartezeit zu gerechtfertigen. Sind es denn so viele? :?:
Verrat doch mal was dazu, vielleicht kann man dir doch noch bei einer Optimierung der DB helfen.
(Bei mir sind z.Zt. ca. 45000 Einträge vorhanden und selbst eine komplexe Abfrage dauert nur Millisekunden -- je nach Menge des Resultats)
Gruß
Pfoto

Ulf346C 4. Nov 2005 10:23

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
Die Abfrage selber ist sehr komplex, im Grunde eine gewichtete Umsatzbewertung nach Materialien und Lieferanten (wir müssen unseren Einkauf vordisponieren bei Lieferzeiten > 3 Monaten aus Übersee).
Es wird entschieden mehr (> 10) als nur eine Tabelle abgefragt, und eine Menge Stringoperationen dabei. Der Hauptbestand (Kundenrechnungen) sind aber auch schon > 60000 Datensätze.

Ich versuche mal die Zentralroutine in einen eigenen Thread zu packen. Ich bin aber etwas skeptisch, ob die BDE das verträgt.

Bernhard Geyer 4. Nov 2005 15:27

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
Zitat:

Zitat von Ulf346C
Ich versuche mal die Zentralroutine in einen eigenen Thread zu packen. Ich bin aber etwas skeptisch, ob die BDE das verträgt.

Dann nimm doch was anderes. :-)
Aber ich denke wenn Du auch die Connection (TDatabase) im Thread erzeugst dürft es kein Problem geben. Aber wieso noch BDE? Welche Datenbank verwendest Du denn?

Ulf346C 4. Nov 2005 17:02

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von Ulf346C
Ich versuche mal die Zentralroutine in einen eigenen Thread zu packen. Ich bin aber etwas skeptisch, ob die BDE das verträgt.

Dann nimm doch was anderes. :-)

Ich habe meine DB's gerade auf MySql umgestellt.
Per SQL dauert das Ganze aber noch entschieden länger als mit lokalen Kopien als Paradox-Datei, abgesehen davon daß ich eigentlich gar keine Lust habe die Ganze Auswertung (die ja doch so ganz ohne ist) jetzt auf SQL umzuschreiben

Bernhard Geyer 5. Nov 2005 08:47

Re: Delphi 5: Darstellung hängt bei längeren Abfragen
 
Zitat:

Zitat von Ulf346C
Ich habe meine DB's gerade auf MySql umgestellt.

Eine Möglichkeit

Zitat:

Zitat von Ulf346C
Per SQL dauert das Ganze aber noch entschieden länger als mit lokalen Kopien als Paradox-Datei, abgesehen davon daß ich eigentlich gar keine Lust habe die Ganze Auswertung (die ja doch so ganz ohne ist) jetzt auf SQL umzuschreiben

Ich vermute mal das dir evtl. noch ein paar Indexe fehlen, welche die Sache beschleunigt.
Und da wir die entsprechende Query nicht kennen wissen wir auch nicht ob du auch dort einige Fehler gemacht hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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