this is your original
UPDATE tblSMP SET tblSMP.Status = "Yes"


WHERE (((tblSMP.checkoutID)=[Forms]![frmCheck]![checkoutID]));
So a vba solution has worked, but what was the reason? Would you mind enlightening me/us so we can pinpoint the real problem, because the solution is just a vba constructed sql statement that should have worked in a query? I say .Value is not the answer, since .Value is the default property of a textbox, so if you don't use the keyword, your references return the data held by the .Value property anyway. I have 2 other suspects -
one is the bang (!) separator instead of the dot (.) before [checkoutID], the other is that the form control and the field name are the same. In some cases, Access cannot decipher which you mean to refer to. I can't recall what those situations are because once I learned that long ago, I NEVER have field and controls with the same names. If I use the form wizard, I rename all controls along the lines of one of the generally accepted naming conventions (e.g. txtCheckoutID) which I would advise everyone to do. To test this theory, you'd have to copy the form and the original query and change the control name as suggested in both places to see if it fixes the problem. If it does, we all could learn a VALUABLE lesson, and I'd get a reminder of why I do what I do.