Default values go into records when they are first created. They are essentially static in nature, in that once the record is created, they do nothing else unless you reach in and change the field value. If your form's user changes values in a new record, the value for which the default was applied does not change unless the USER changes it, too. The most likely place to do what you want would be (perhaps) to put code in the LostFocus routines for the quantity and unitprice fields, and recompute in those places. Then have something in the Form_BeforeUpdate event routine perform the computation for you. If you tried to put a formula as the .ControlSource, you would find that you could not bind that directly to the record. There is no guaranteed static way to do this without a lot of work.