Fred,
Both Jim and Stella's suggestions will work. Implementing the TableUpdate() TableRevert() may seem a little trickier in concept if you've not used it before, and is the safer option. If you use SCATTER NAME <name> GATHER NAME <name> the fields can all be referenced as <name>.<FieldName>, just like the old M.<FieldName>, which may feel a bit more comfortable to you if you're from the Fox "Old School", but you will be responsible for getting and "keeping" your record pointer movements, which leaves you with the risk of over writing a record.
I would suggest taking an hour or two, and understanding TableUpdate (using either Optimistic or Pesimistic Table Buffering... forget Row Buffering), and build your app that way. In the long run, is much easier to do too, withouth mucking with variable names for fields ever again...
Just for info, Optimistic buffering does not try to "lock" the record until you try to write it, allowing others to view the record, and make changes. Pesimistic buffering locks the record as soon as the user makes an edit request, and keeps it locked until the write is done. Depending on your needs, you would need to determine which is right for you.
Best Regards,
Scott
"Everything should be made as simple as possible, and no simpler."
![[hammer] [hammer] [hammer]](/data/assets/smilies/hammer.gif)