I'm somewhat at loss at what you're saying "I guess I am looking for a way to cancel or delete the record after any data errors.", the me.undo does that. Either "deletes" a new unsaved record, or resets a previously saved record to the state it was prior to editing. Doesn't it? Are the constraints you're checking not on table level? Couldn't you try just testing for me.newrecord, then undo if it is, or delete if it isn't?
But then you also state "...because I wanted the data in the other controls kept"
You could perhaps take a look at the before update event of the form. The event fires whenever an attempt to save is performed, and you can do the datavalidation there. In my little experience, I don't think Access saves a new record if it doesn't qualify according to table level constraints.
To use the before update, for instance something like this to check the PK, here using the cancel arguement, which brings focus back to the record for further editing (alter to fit your requirements):
[tt]if len(trim$(me!txtPK & vbnullstring))=0 then
msgbox "fill in"
cancel=true
else
if not isnull(dlookup("pkfield","yourtable","pkfield=" & me!txtPK)) then
msgbox "pk exists"
cancel=true
endif
endif[/tt]
Roy-Vidar