the data is not committed to the table yet.
True but unless you also provide validation in the Form's BeforeUpdate event, it WILL be.
Events are not arbitrary and even though you may be able to get by if you put code in the wrong event by putting code in multiple events, you will find that your validation is more robust and has no holes if you use the Form (or in some cases - control) level BeforeUpdate event.
I use the control's BeforeUpdate event ONLY if I want the validation to happen immediately. For example, if the user has to type in a unique identifier such as SSN, I will usually validate that immediately so that the user doesn't waste any further time if that SSN already exists. I also code additional validation in the Form's BeforeUpdate event. For example, if a field is required, the only place it makes sense to check for this is the Form's BeforeUpdate event because control level events do not even fire if the control never obtains the focus. The other problem with ranman's specific example is that 50% of the time, the error will be raised when it shouldn't be. If one value depends on another, how can you compare them before they are both entered? The answer is, you can't so don't even try unless you want to write unnecessarily complicate code. Just wait until the Form's BeforeUpdate event. At that point in time BOTH values should have been entered so you would check to make sure they were entered and then compare them. That gives you the best error message without unduly annoying the user.