Ich würde folgendes versuchen:
- 1. AdsQuery.Sequenced := True;
2. Processmessages in der Schleife durch Update der benötigten Komponenten ersetzen
3. Die ganze Progress-Geschichte über einen Callback aufrufen lassen und nicht in die Schleifen integrieren
und dann prüfe mal, ob der Fehler beim ersten Durchlauf der while Schleife auftritt oder erst bei einem der folgenden (a > 0).
Des weiteren sehe ich solche Bemerkungen wie "try deaktiviert zur Fehlernachverfolgung". Bau doch mal MadExcept oder EurekaLog ein. Dann kannst Du auch vom Kunden qualifizierte Fehlerberichte erhalten, evtl. sogar automatisch per E-Mail. Und die mehrfachen with machen ein vernünftiges Debugging auch nicht gerade zum Kinderspiel.