TaskVision and an ever-increasing learning curve!
Earlier I mentioned my dilemma over how I would handle data collisions when re-synchronising an offline client via a WebService. Jesse offered some advice as to how this might be done. Thanks Jesse!
I've since poured over the TaskVision code and found that they demonstrate an excellent way of handling this very issue. Basically, I can enumerate the DataRows and, if an exception occurs, use the SetColumnError() method to apply a rowerror. I also re-assign the values from the database and accept them, *then* re-apply my proposed changes (but not accept them). After my updates are complete I return the DataSet to the client who can inspect the DataSet to see whether errors are present and manage the changes themselves.
For anyone interested in seeing the TaskVision code, take a look at the UpdateTasks() method in the WebService.