Moin!
Mich plagt ein Phänomen. Wenn ich ein TADOQuery asynchron öffne, werden sämtliche Fehlermeldungen verschluckt und ich erhalte niemals Feedback, ob die Abfrage noch läuft oder gescheitert ist.
Hier mein Code:
Code:
...
query.ExecuteOptions := [eoAsyncExecute,eoAsyncFetch,eoAsyncFetchNonBlocking];
query.tag := 0; // sollte onFetchComplete auf 1 gesetzt werden
query.Open;
while (
query.Tag = 0) do begin
sleep(30);
self.step; // hier gibt´s eine "Ich tue was"-Animation
end;
...
In der While-Schleife wird eine Animation abgespielt, um dem user zu zeigen, dass das Programm gerade beschäftigt ist (darin auch ein application.processmessages). Wird das Ereignis onFetchComplete ausgelöst, wird tag auf 1 gesetzt und die Schleife bricht ab. Das funktioniert alles top, solange die Abfrage keine Fehler erzeugt. Die Schleife läuft aber unendlich weiter, wenn ein Fehler auftritt, das Programm auf keine Weise davon etwas mitbekommt und somit tag nie auf 1 gesetzt wird.
Ideen?
EDIT: Arbeite übrigens mit Delphi 2009