but how do I only get the records which have had either an email address added, updated, changed or deleted?
We don't know.
How, specifically, did you design your file to track this information?
I have inherited a database, so this is a new task I am wanting to do, so unfortunately it has not been designed to do this.
I just need to flag any changes to email addresses.
At the layout level, you could place an OnObjectSave trigger on the email field and do a single step script to set another field to Get (CurrentTimestamp).
Then you can use that field to do a find on whatever date range you need.
That sounds like what I could be looking for. As I am new to all this could you please explain what a trigger is?
I will Google how to set this all up.
Or at the field level, create a timestamp field, auto-enter calculated, uncheck do not replace, and use this formula:
Let ( Trigger = yourEmailField ; Get (CurrentTimeStamp) )
Thank you for your help, will try and set this all up.
Better to use the field level version anyway. But FYI, a script trigger can be placed at the file, layout or object level to cause a specified script to run when certain events occur.
If you use my second answer, the timestamp will update from anywhere your email field changes anywhere in your solution file.
If you use the first, it will ONLY trigger on the email field object which has the script trigger attached. It just depends on which behavior you want or need.
If this works for you, kindly mark my answer as "correct"
This is probably obvious to you, but keep in mind that this will let you track modification dates only on all future changes of this data. It will not allow you to see when these addresses were previously changed.
Auto-enter calc is the way I would do it, too. If you need more than one field you can simply add them to the trigger equation:
Let ( Trigger = field_1 & field_2 & field_n ; Get ( CurrentTimeStamp ) )
Whether you use ampersands, plusses or "And"s, or pretty much any operator, all you care about is that this field gets a new timestamp whenever any one of the fields changes in any way. Also make sure you uncheck the "Do not evaluate if all referenced fields are empty" box if you want to capture when the field(s) was/were last cleared. Also, as Philip said, uncheck the Do Not Replace box.
This is a good way to modification-timestamp a record whenever you don't want EVERY field in the record to trigger the modification field to update, as merely setting the modification timestamp in the field options will do.