*** First you must set focus to another object on the form *** Otherwise you will get error 109 - record is in use by another *** even if this is a single user app LOCAL lUpdating *** Set flag because the SetFocus() line *** will cause the valid to fire again and we'd *** like to avoid an infinite loop lUpdating = .T. IF NOT lUpdating Thisform.SomeOtherControl.SetFocus() REPLACE < supervisor code field > WITH < some value > IN ( This.Parent.Parent.RecordSource ) This.Parent.SetFocus() lUpdating = .F. ENDIFThis code is untested and off the top of my head, but it should give you a place to start. Alternatively, you could create a view with a field called lSelected and bind the column with the checkbox to that. Then, if you have a 'Save' button on the form, you could loop through the grid's RecordSource and REPLACE the supervisor codes for all records where lSelected is true and TABLEUPDATE() the entire table afterward. Personally, if it were me, this is how I would handle it.