Yo creo que es casi imposible ayudarte a conseguir que funcione tu código. Te aconsejo que borres todo y lo rehagas, porque estás mezclando órdenes que no tienen nada que ver con las variables a las que se las aplicas, tienes instrucciones que no pueden darte nada más que errores... Yo creo que así no sólo no consigues bloquear el registro, sino que no conseguirás ni siquiera abrir el fichero. ¿A tí no te da errores por todas partes?
Private Sub Text1_LostFocus()
If Text1.Text = "" Then
MsgBox "No puede dejar el código vacío"
Text1.SetFocus
exit sub
endif
If Not IsNumeric(Text1.Text) Then
MsgBox "El código debe ser numérico"
Text1.Text = ""
Text1.SetFocus
exit sub
End If
Text2.SetFocus
end Sub
Private Suc cmd_grabar_click()
Set rs = base.OpenRecordset("dctos", dbOpenDynaset, False, dbPessimistic)
rs.Requery
rs.FindFirst ("Codigo = '" & Text1.Text)
' (Yo no uso nunca el Seek, y por lo tanto no lo sé utilizar...)
if rs.Nomatch then
rs.AddNew
else
rs.Edit
endif
Rs!codigo = text1.text
Rs!detalle = text2.text
rs.update
rs.Close
End Sub
Supongo que si lo cambias a algo parecido a esto podrías conseguir que funcionara; pero lo estoy haciendo "de memoria" y con instrucciones que debo ajustar a tu forma de programar, no a mi forma...
Y recuerda que cuando se trata del mismo tema debes MODIFICAR TU MENSAJE, en vez de añadir un mensaje nuevo.
Saludos y mucha suerte