I have a form a customer wanted to track changes in. Not all changes, just the “important” ones which is a business definition. No problem. So what was my approach?
I built a class object that could store the original state of a recordset, then compare that with a current state of the record set.
The customer did not want to know what was being changed at each change per se, although they did want to update the overall message about what all had been changed after each change.
If the user changed a field and then changed it back, that was not to register as a change since they undid it.
So, basically, comparing the original recordset for when they opened the particular record until they were done with that form session and closed the record. The final output was a paragraph that would display each record that was changed according to the label on the form (this was accomplished with a static array I set up for the particular form) and then some functions to “translate” things like checkboxes and combo box ID values to a human readable value.
I don’t have a fuilly generic solution, but the recordset comparison is generic and compare any changed recordsets. That’s a good start.