<I believe I know the solution, but I would welcome opinions from others.>>
When it comes to subforms, you have two options:
1. Bind the main and subform in code so you can use a transaction
2. use temp tables - when the user edits or adds, you copy everything to the temp tables. If they save, you copy back. If they cancel, you simply don't do anything.
The problem with a main/subform combination is that Access comits the main form record when you enter a subform (you don't even have to do anything to it).
JimD.