Hi KB;
You need to observe a few principles in your approach, as follows:
1) Use the Update(True, FALSE) parameters to ensure that the DW does not reset its update flags if a problem occurs.
2) You can always use the ReselectRow() method to refresh the one failed row with current data from your DBMS.
3) The other way to bring back the original data is to copy it from the "original" buffer back to the DW's primary buffer by using the RowsCopy() method or DW DOT Notation syntax.
FWIW: you certainly don't want to do a Retrieve () again as your right, it clears out your current buffers.
HTH
Regards ... Chris