Closing the dataset might indeed do the trick.
The savepoint option might be a problem, because in general it is unknown if the transaction is committed or rolled back between the edit operation of the first record and the call to CancelUpdates.
We could add an oprion for an optional rollbackl though for CancelUpdates though, so you could explicitly rollback to your savepoint.