After some experimentation, I've concluded the following:
1) It is possible to make use of Delete event to restrict what records can or can't be deleted, save the record, or move to another record.
2) It is not possible to do a requery because once we're in Delete/BeforeDelConfirm/AfterDelConfirm, Access already has opened a transaction and is holding the record in a buffer. If we want to do requery, it will have to wait until after the fact.
3) If any other events that are fired during the Delete events are pending (e.g. saving a record in a Delete event), #2 still applies. Thus if any other events that are called due to operation executed in Delete requires an action that isn't supported in a transaction, it will fail as well.
4) There are no events *after* the deletion has been completed and the buffer closed. Thus the firing sequence is:
Delete -> BeforeDelConfirm -> AfterDelConfirm
and either Delete and BeforeDelConfirm can be used to cancel deletions (but I've observed strange results with BeforeDelConfirm - see below)
What happens after AfterDelConfirm is anyone's guess.... Current event does not necessarily fire right after AfterDelConfirm, so it can't be used to requery when passed a flag from the Deletion.
Also, if Delete event is cancelled, neither BeforeDelConfirm nor AfterDelfConfirm will be fired, but if BeforeDelConfirm is cancelled, AfterDelConfirm still fires regardless. Regardless of the actual firing sequence, a buffer is open in all three events (or just one event where Delete event is canclled)
5) BeforeDelConfirm event is special. If it's cancelled, the deletions are aborted, yes, but any edits or changes made between the Delete event and BeforeDelConfirm seems to be rollbacked, and the record is removed from the form's recordset (but not from table). I believe this is flaw in Access.
6) When we enter the delete sequence, Access opens a transaction. That transaction is not accessible (e.g. I cannot force a rollback or commit upon that transaction) and it's open until *after* the AfterDelConfirm event has fired, which is too late to do anything.
All in all, I'd say "screw it" and disallow deletions by setting AllowDeletions to false and provide your custom deletion sequence via a button/custom toolbar, where there are no buffers involved that we have no control over and you can requery whenever you need and setting the focus on the next record without fighting with Access.