Shadow
I dont think thats a fair comment to make at all
1. You certainly can create the functionality you require
As i see it, you are trying to decide whether you wish to delete an item, or not - if you do, then you wish to store that information in another table, and then delete the item
so, it may be that using the particular event you are trying to use is not appropriate - either it is not possible with the event, or it is possible but you need to find a different mechanism. If it is not possible, then you need to find another way. Access is not a sequential language, it is event driven, and it is therefore hard to know exactly what sequence of events is needed to achieve certain things, without trying them.
2. eg - You say that your users are creating invoices to train staff. I would not like to do that at all - I would rather have a test system avaialble to demonstrate stuff like that. Its all very well deleting the invoice, but does your invoicing process update any other records, such as inventory etc. Similarly with deleting invoices because they were entered incorrectly. This is hardly the fault of access, and I presume that is where your original requirement came from.
-----------------
having discussed all of the above, i thought i would try to do what you wanted with the database you posted - so I added an invoicesdeleted table, and code to insert the deleted invoices, and it DID work exactly how you wanted it to, with just code in the form_delete event - nowhere else at all
ie - if you delete the invoice and enter a reason, it stores the deletion, and deletes the invoice. if you cancel the deletion nothing happens
so i am back to thinking that it is your code that is at fault, and i suspect the fault is in the code that adds the deletion to the deletion log, which you didnt post.
so can you post ALL the code in your form_delete event, so we can see what you have there.