Through use of Optimistic Row and Table Buffering (set by DBSETPROP()), and the programmatic control of TABLEUPDATE(), CURVAL(), OLDVAL(), GETFLDSTATE(), and GETNEXTMODIFIED() functions in or called by an ON ERROR routine, you can handle the error number 1585 or 1595 (update conflict) and provide the user a method of reviewing the changes made by other users and determining whether or not to force their changes over them.
Sorry, I can't write it for you! :-)
Michael P. Haake
FoxPro Programmer
"Doing the best I can!"
** Retired Air Force **