TDataSet.State ist kein SET sondern ein ENUM und kann somit immer nur in einem Zustand sein.
TDataSetState
Im ersten Beitrag bin ich etwas verwundert über das Konstrukt
Wenn hier schon mit Transaktionen gearbeitet wird, dann sollte das in einem try ... except Block stehen.
Delphi-Quellcode:
MyDataSet.StartTransaction;
try
...
MyDataSet.Commit;
except
MyDataSet.Rollback;
end;
Des weiteren ist es fraglich, warum überhaupt geprüft wird, ob sich die Datenmenge im Einfügemodus befindet. Wenn, dann sollte diese Prüfung
vor StartTransaction erfolgen, denn sonst ist ja ein Teil der Datenänderung ausserhalb und ein anderer Teil innerhalb der Transaktion.
Auch wenn dieses Konstrukt so irgendwie funktioniert, habe ich meine Zweifel an der Zuverlässigkeit des Codes.
Es wäre gut mal die gesamte Routine zu sehen (die Zuweisungen können verkürzt sein), dann kann man da mehr zu sagen.