Tamar,
doesn't the Form Builder use the wizard classes, too?
Yes, it does. But, more to the point, it doesn't enable buffering.
Paul,
Did you mean that when you look at the form you are looking at the buffer?
Yes.
Suppose you have a form with a control called txtName, and this is "bound to" the Name field in the Customer table (that is, its ControlSource is "customer.name"). The form is buffered.
Anytime you reference Customer.Name anywhere in the form, you will be seeing the contents of the buffer. If you executed "? Customer.Name", you would display the value in the buffer, and if you did "REPLACE Customer.Name WITH 'Paul'", the replace would operate on the buffered value.
When you issue TABLEUPDATE(), the buffered value will get written to the physical file. If you decide you don't want to do that after all, you call TABLEREVERT(), in which case the buffered value will be lost, and the buffered fields will revert to their original values.
Since this is a single user application with no network involved why is a lock needed?
If that is truly the case (bearing in mind Dan's caveat), then you should still use buffering, but the choice between optimistic and pessimistic is no longer so important (I guess optimistic might be very slightly faster).
I would add that I totally agree with JRB-Bld's advice. The wizards and the form builder have their place, but the ideal way to create a form is to do it "by hand".
Mike
__________________________________
Mike Lewis (Edinburgh, Scotland)
My Visual FoxPro site: www.ml-consult.co.uk