Res.Execute
Do
'mach was
Res.NextRow
'mach was
Loop Until Res.Isendofdata
Ablauf:
nimmt den ersten Satz --> macht was --> NextRow (macht er nicht!! weil der Currentrow =1 bleibt) --> mach was --> Loop --> mach was --> NextRow (macht er!! Currentrow =2) --> mach was --> ENDE
Dh er killt wieder den letzten Satz
Ich checks ned... Macht keinen Sinn.
Das Verhalten ist ganz einfach erklärt: Der erste (!) Aufruf von NextRow positioniert immer auf Row 1, da es ja noch keine vorherige Position gab und diese quasi undefiniert ist. Du kannst zwar schon auf Daten zugreifen weil DU weißt dass der Zeiger auf dem ersten Datensatz stehen müsste aber der interne Zeiger, mit dem NextRow arbeitet, steht auf Null.
Damit sieht es so aus als würde der erste Datensatz doppelt angesprungen werden aber das wird er nicht da erst nach dem NextRow überhaupt ein definierter Zustand vorliegt!
Ein anderes Vorgehen, also mit FirstRow etc. wird ausschließlich dann benötigt, wenn der erste Datensatz eine andere Behandlung als der Rest bekommen muss.
Daher gilt, was dir jBubbleBoy im ersten Post geschrieben hat:
result.Execute
Do
result.NextRow
code for processing one row
Loop Until result.IsEndOfData
Ich würde unabhängig davon Code zur Fehlerbehandlung empfehlen und Zwischenmeldungen (z.B. Counter) einbauen.
HTH
Carsten