>I never get an error in new() method; the form have an ~all cases treated in error event. The new() method is called from a button to make room for editing a new record, and newgrid() several times for new lines on child, finaly save() for all.
Your code had IF ...::New() my question is what if New() returns False you have no ELSE on that IF.
>User 2 replaces data over fresh appended record of user 1.
This sounds like there is no buffering going on. Have you checked CursorGetProp("buffering","ALIAS") on these tables at runtime?
>The area with table wich need saved are selected prior.
Makes no difference, You are in an event driven system with VFP. Someone could add a timer or other code call that fires and changes work areas on you. It is much better to use all of the arguments on TableUpdate() so you cqannot get burned by this kind of change later on.
TableUpdate( < nRows >, < lForce >, < cAlias >, < aErrorArray > )
This will prevent any un expected problems and it will populate the aErrorArray with information about why TableUpdate failed in case you ever what that info later to recover from problems.