Już chyba przetestowałem wszystkie możliwe ustawienia ADODataSet i ciągle mam problem.
ADODataSet CursorLocation = clUseClient, LockType = ltBatchOptimistic.

Robię jakieś operacje na tym datasecie i na koniec wykonuję UpdateBatch(arAll).
I to zadziała (insert do tabeli się wykona)

Ale na tej samej tabeli jest trigger (AFTER INSERT), który aktualizuje jedno pole we wstawionym insercie.

SELECT ISNULL(ID_DOK, 0) FROM INSERTED

I triggerze w tym momencie id_dok jest 0, czyli pewnie wstawia się NULL (a przed UpdateBatch w datasecie to pole jest wypełnione)

Dlaczego tak się dzieje ? Na innych datasetach, na których wykonuję normalnego posta, nie ma takiego problemu.