I'm going crazy over this. I can't update a database record without the table just being opened. I have to pass a variable as part of the SQL statement query in order update the correct record. But I can't pass the variable to the rs.Open command as it doesn't accept it. If I try and use the rs.Execute method which will accept the SQL statement, I can't update the record because it's locked. How am I do to this? Dim RecordUpdateValue As String RecordUpdateValue = "SELECT ROADID FROM MSLINK_ROADID WHERE MSLINK" & " = " & UserForm1.TextBox1.Value Dim dbRst2 As New ADODB.Recordset dbRst2.Open "MSLINK_ROADID", dbConn, adOpenKeyset, adLockOptimistic, adCmdTable dbRst2!RoadID = UserForm1.TextBox2.Value dbRst2.Update End Sub I somehow have to get the value in RecordUpdateValue passed to the recordset so it updates the correct record. Otherwise it just updates the first record, which is wrong.