![]() |
Re: SQL-Select während der Ausführung wieder abbrechen
:-D Hab zwar keine Antwort auf meine ursprüngliche Frage erhalten, aber dank Eurer Hinweise dennoch eine Lösung für mein Problem gefunden. Ich trage jetzt beim ClientDataSet in der Eigenschaft "PacketRecords" einen Wert abweichend vom Default -1 ein (z.B. 500). Dann wird das ClientDataSet.Open ausgeführt, holt sich aber erst einmal nur 500 Datensätze. Anschließend läuft mein Programmcode weiter und Rave wird aufgerufen. Rave holt sich dann nach und nach die weiteren Datenpakete. Da ich aber für Rave ohnehin schon eine Aussprungsmöglichkeit während des Aufbaus der Seiten vorgesehen hatte, hat der Anwender nun die Möglichkeit die Datenermittlung und Druckausgabe rechtzeitig zu verhindern. Mit den 1 bis 2 Sekunden, während derer das nicht möglich ist, kann ich (und sicher auch der Anwender) leben.
Falls aber noch jemand eine Antwort auf meine in #10 gestellte Frage weiss, wäre ich daran weiterhin interessiert. Ansonsten vielen Dank! :cheers: Daddy |
Re: SQL-Select während der Ausführung wieder abbrechen
:wall: Hmmm! Meine Begeisterung war vielleicht etwas voreilig.
Es kann ja auch vorkommen, dass ein Rave Report einfach nur das Ergebnis einer Aufsummierung anzeigen soll. Um also den Einwand aus #3 zu entkräften, kann man ja einfach mal annehmen, dass eine Million Datensätze, die dann vielleicht noch über zwei left joins mit anderen Tabellen verknüpft sind, gelesen und addiert werden müssen. Und das Ergebnis wird anschließend in der Druckvorschau angezeigt oder direkt auf dem Drucker ausgegeben. Das wird ja auch auf einem schnellen System schon mal 10 oder deutlich mehr Sekunden dauern können. In meinem Programm lässt sich z.B. eine Fünf-Jahres-Entwicklung der Umsatzzahlen abfragen und da können schon eine ganze Menge Daten anfallen. Dann wäre es natürlich doch von Vorteil eine Antwort auf #1 oder #10 zu bekommen, um solch ein Select wieder anzuhalten. Hat also vielleicht doch jemand eine Idee? :gruebel: |
Re: SQL-Select während der Ausführung wieder abbrechen
Zitat:
Mit dem Dependency Walker lässt du dir die Funktionen anzeigen. Über eine Suchmaschine nach den Funktionsnamen suchen und die Deklarationen als *.pas oder *.h auftreiben. Ich weiss nicht, ob ich auf dem falschen Dampfer bin, weil ich hier keine fbclient.dll vorliegen habe, aber es gibt anscheinend eine Funktion:
Delphi-Quellcode:
Die Vermutung liegt nahe dass man isc_dsql_finish() vielleicht schon aufrufen kann, wenn die Query noch gar nicht fertig ist.
function isc_dsql_finish(db_handle : PISC_DB_HANDLE): ISC_STATUS;stdcall; external IBASE_DLL;
Also untersuchst du erst mal, wo isc_dsql_finish() in der Zeos-Lib aufgerufen wird. Vielleicht ist ein vorzeitiger Abbruch schon vorgesehen oder man kann es durch eine kleine Erweiterung nachrüsten. u.s.w. eben Reverse Engineering |
Re: SQL-Select während der Ausführung wieder abbrechen
Hallo,
um noch mal zum Thema zu kommen ... Ab FB2.1 (oder schon 2.0 ?) besteht die Möglichkeit, eine laufende Query zu beenden, und zwar über die Monitoring Tables. ![]() Suche dort nach Cancel a Running Query Das das in einem anderen Thread passieren muss, sollte klar sein. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 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