![]() |
Datenbank: ADS • Version: 12 • Zugriff über: FireDac
FireDac Asynchron Abort
Hallo,
versuche gerade folgendes Beispiel: ![]() Jetzt möchte ich so einen asynchronen Aufruf vorzeitig abbrechen. Mit FDQuery1.Close; gelingt mir das leider nicht. Die Query wechselt in FDQuery1.Command.State = csPrepared Wie komme ich wieder in den FDQuery1.Command.State = csInactive? Der einzige Weg denn ich bis jetzt finden konnte ist FDQuery1.Connection.Close; Aber es muss einen anderen Weg geben. |
AW: FireDac Asynchron Abort
Hast du denn schon
![]() |
AW: FireDac Asynchron Abort
Oh. Hätte ich erwähnen sollen. Ja habe ich versucht. Leider auch ohne Erfolg. Es bleibt bei csPrepared
|
AW: FireDac Asynchron Abort
Welchen Zustand würdest du denn erwarten?
|
AW: FireDac Asynchron Abort
In der Regel kannst du von csPrepare durch den Aufruf Unprepare auf csInactive wechseln. Die Frage ist, warum du das Prepare später nochmal durchführen willst, wenn es doch schon erfolgreich war.
|
AW: FireDac Asynchron Abort
Wenn eine Abfrage noch läuft und ich dann wieder in die Procedure gehe dann bekomme ich an folgender Stelle eine Exception:
Delphi-Quellcode:
FDQuery1.Close;
FDQuery1.SQL.Text := 'SELECT * FROM Table1'; // hier eine Exception wenn FDQuery1.Command.State = csPrepared |
AW: FireDac Asynchron Abort
Auch bei AbortJob(True)? Es kann ja sein, dass der Abbruch intern etwas dauert.
Das Prepared ist aber auch so dokumentiert: Zitat:
|
AW: FireDac Asynchron Abort
Habe es jetzt so gelöst:
Delphi-Quellcode:
Scheint erst ein mal zu gehen. Danke.
FDQuery1.Close;
if (FDQuery1.Command.State = csPrepared) then FDQuery1.Unprepare; if (FDQuery1.Command.State <> csInactive) then begin FDQuery1.Connection.AbortJob(true); FDQuery1.Connection.Close; end; |
AW: FireDac Asynchron Abort
So richtig funktioniert es immer noch nicht.
Ich komme einfach nicht zu csInactiv. Mit
Delphi-Quellcode:
komme ich von csExecuting zu csOpen.
FDQuery1.Connection.AbortJob(true);
Mit
Delphi-Quellcode:
kommt die Exception: [FireDAC][Comp][Clnt]-326. Ausführen der Aktion nicht möglich, weil die vorherige Aktion noch nicht abgeschlossen ist
FDQuery1.Connection.Close;
Wenn ich diese mit try except einklammere dann habe ich danach den Status csOpen und nicht wie gewünscht csInactiv. Die Connection lässt sich nicht schließen. |
AW: FireDac Asynchron Abort
Gemäß Beschreibung sollte das aber eigentlich funktionieren.
Kannst du das mit einem Beispielprojekt reproduzieren? Dann würde ich das mal mit der aktuellen Delphi Version probieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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