Autor Beitrag
baurat
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 06.02.12 19:06 
Hallo,
in meiner Datenmodul (mysql über zeos unter Delphi 6 prof) kleben viele Queries, die zur Laufzeit aktualisiert werden. In verschiedenen Forms sind DB-Komponenten (DBEdit etc, aber auch z.B. Jedi DBComboSearchBox).
"An sich" ist alles ok.
Nur bei einer Query passiert folgendes: das Programm steht für ca. 20 Sekunden, die CPU-Last geht nach oben, nichts geht mehr. Nach den 20 Sek. ist die Query durch, alles läuft normal weiter.

Jetzt bin ich auf der Suche nach der Ursache bzw. am Nachforschen, was da überhaupt passiert.
Ach so: die Query selbst ist's nicht, die braucht 0,... Sekunden wenn ich sie direkt ausführe.

In allen anderen Queries machen ich "eigentlich" nichts anderes, da läuft alles fix.

Vermutungen:
1) am Dataset der Query hängen irgendwelche Komponenten, die nach einem Update ständig neu über nachgeschaltete OnChange-Ereignisse oä andere Aktionen triggern; an der Query hängt insbes. eine JvComboSearchBox mit einem onchange
-> das habe ich soweit möglich händisch kontrolliert und mal alles deaktiviert, kein Unterschied
2) anderer Versuch: mit SendMessage(f_main.Handle, WM_SETREDRAW, 0, 0) die Aktualsierung zu unterbinden
3) ebenso problemquery.disableControls, dann problemquery.open und dann wieder problemquery.enableControls - leider das gleiche, die Kiste steht für 15 Sek.
4) über den asmProfiler versucht, etwas mehr Info zu bekommen - leider sagen mir die Ergebnisse nichts, ich kann keinen Bezug zu evtl. aufgerufenen Prozeduren finden

Jetzt bin ich wohl ziemlich mit meinem Latein am Ende. "Irgendetwas" läuft da massiv an, wenn die query neue Daten kriegt.

Wie komme ich der Ursache auf den Grund? Wenn ich einen breakpoint setze und mit F7 durchsteppe, fahre ich ewig in den Sourcen der DB-Komponenten rum, das scheint mich nicht zum Ziel führen. Wie kann ich herausfinden, was nach dem Öffnen einer Query alles gestartet wird?


Vielen Dank für eure Tipps!

LG Heiko