Thanks Sylvain. I guess I never thought to do it that way. You've been so helpful. (you too Bill)
>FWIW, I don't use updatable grid very often. My grids are read-only and I add 3 buttons (New, Edit, Delete) next to it. I display a modal form for editing the record.
>
>The buffering should be done on the table BufferModeOverride in the DataEnvironment because it offer you to specify table or row buffering. You should use table buffering.
>
>Are you specifying the alias in the TableUpdate()/TableRevert()? You should, if you do not.
>
>HTH
>What is the best way to set up a grid so that the user can cancel the changes made to it. I'm getting no where fast. First of all, should the buffering be done at the form level or table level? and what type is best. I'm inserting into the alias and using tableupdate(), with pessimistic and optimistic buffering at the form level I get 'Table buffer for alias "Alias" contains uncommitted changes when I try to 'cancel' with tablerevert() and then requery. And if there is no buffering set, I don't get the message, but it doesn't revert.
"Live Well, Laugh Often, Love Much..."