In Ms. Access, this is fairly straight forward. There is an "IsDirty" property which is set whenever the content of a specific control is 'changed'. You can easily check all of the bound controls on a form in the BeforeUpdate event of each form, and YES, create a log file to record the info you want.
The VB "IsDirty" property appears to be somewhat different, at least from a quick glance at the help file.
I THINK you could simulate the Ms. Access approach by Using the GotFocus and LostFocus events. Basically, the GotFocus Event would need to 'record' the original value of the (selected) controls, while the LostFocus event would need to compare the current value to the original value, and record any diff in the log file.
There will be numerous 'cases' and exceptions which need to be handled by any such procedure, such as figuring out how/when to reset the 'original' value (should only do this when the app changes the "record" of the form) and wheather the record was actually written to the db ... etc.
Depending on the complexity of the db/app, you might also consider setting up UDT's corresponding to the tables which may be changed by your app. Whenever you go to write a record, fill them with the current record and compare on a field by field basis, and write the diff to the log.
In any case, you need to be aware that thiese processes will (can) only capture the changes made through the app. It is easy/trivial to go directly to the db and add/edit/delete records w/o having any record of the changes.
MichaelRed
mred@duvallgroup.com
There is never time to do it right but there is always time to do it over