It means there is a reason why the record cannot be saved.
The form's Dirty property indicates that there are uncommittted edits in
progress in a form. Access sets the property to True as soon as you start
editing a bound control in a form.
When you set the property to False, Access responds by saving the record.
But that may not succeed. For example, if a required field is missing, or a
duplicate index is violated, or a validation rule is not met, or if you
cancel Form_BeforeUpdate, then Access cannot save the record. In this case,
the attempt to set Dirty to False fails. VBA then informs you that setting
the property did not work. The message is not very clear, but that's what it
is trying to tell you.
Consequently, any code that attempts to save the record needs to use error
handling. In the error handling you will want to trap error 2101 (and maybe
also some others such as 2115 and 3314), and give the user a more meaningful
message, e.g.:
Select Case Err.Number
Case 3314, 2101, 2115 'can't save.
strMsg = "Record cannot be saved at this time." & vbCrLf & _
"Complete the entry, or press <Esc> to undo."
MsgBox strMsg, vbExclamation, strCallingProc
...
Since this is needed in many places throughout an application, it makes
sense to create a generic error handler function that you call from all your
procedures, and you can develop these specialized error handling routines in
the one place (e.g. you may want to ignore error 2501, or catch error 0.)
For an example, see:
Error Handling in VBA
at:
http://allenbrowne.com/ser-23a.html
The other possiblity is that you have attempted to use the Dirty property
for an unbound form. That fails with a different error.