>I think I understand it a bit better now.
>
>I thougt that tablerevert() could be used to revert changes made to the base table but this is not the case. I also thought that i could revert changes to the view after i had allready did a tableupate().
>
>How I understand things now is:
>1) Tablerevert() has only effect on the view, only when a tableupdate() has not yet occured.
I agree.
>2) Use cursorsetprop('buffering',5) to set tablebuffering to optimistic table buffering, to avoid records being automatically updated.
Yes; but in principle you can also check that there are no pending changes before changing to another record. This would be part of your form class. Also, note that there are some restrictions when using table buffering - for instance, you can't create temporary indices, or transactions.
>3) Tableupdate() commits changes to the VIEW and makes these changes "permanent" and "forces" these changes back into the basetable.
Yes.
>4) The cursorsetprop('buffering',5) only applies to the view.
Yes. In principle, you could also buffer the underlying table (you would have to do this separately), but I don't see the point to that. That would require TableUpdate()-ing the underlying table as well, I think.
>5) After the view is opened, changing the sendupdates property with "dbsetprop('myview',view','sendupdates',.t.)" doesn't have any effect within the current datasession.
I don't know about this one. I only work with tables or views created in the view designer, and the only property I need to set is CursorSetProp("Buffering").
Hilmar.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)