Ich würde die While-Schleife anders gestalten.
While (not (Query.EOF)) do
Query.EOF sollte TRUE sein, wenn die Anfrage fehlerhaft ist.
Ob das allerdings bei einem asynchronem Aufruf funktioniert, weiß ich nicht.
Dann gibt es da noch die Eigenschaft TAdoQuery.Prepared. Evtl. kann man damit etwas anfangen?
Mehr fällt mir i.M. auch nicht ein. Bleibt nur noch die Lösung von Sir Rufo.