Nach einigen Stunden im Debugger (bei asynchronen Routinen macht das Debuggen doppelt Spass) bin ich ein wenig schlauer.
Aber geholfen hat's noch nicht.
TDataSet.First ruft zuerst InternalFirst auf,
bei
ADO bedeutet dies MoveFirst + MovePrevious
=> recordset-objekt wird vor den ersten Satz gesetzt; recordset.bof ist true
Danach wird GetNextRecord aufgerufen,
resultiert in recordset.MoveNext.
so weit, so logisch
Aber:
steht der
ADO-Recordset auf BOF, positioniert recordset.MoveNext
- bei synchronem Execute auf den 1. Datensatz
- bei asynchronem Execute auf den 2. Datensatz
Muss ich mich jetzt bei Microsoft beschweren?