I think this post answers your question.
----------------------------------------------
in the form's OnCurrent event, add a procedure (as i described in my
previous post) and add the following code:
Me!MyControlName.Locked = Not IsNull(Me!MyControlName)
(notice that you have to use a specific control name in this line of code)
the Current event fires when you first open the form, because the focus
settles on a single record, and fires again each time you move from one
record to another. so you can lock/unlock any number of controls for the
appropriate conditions of each record.
if you want to lock control(s) in the current record after data entry is
completed, *without* moving to another record, then add the same code to the
form's AfterUpdate event *in addition to* the OnCurrent event.