I've answered my own problem here.
Thanks CJ but escape doesn't work if you have a subform and move focus to that because Access autosaves at this point.
I had an SQL statement which created temporary tables to store the original information (Thee User is editing here).
Then on undo another statement to re write the changes. The problem with having lookup tables was resolved by simply saving the record before performing any SQL.