Se puede desbloquear un control desde un código vba

Tengo el siguiente código

If Nz(DCount("telefono", "clientes", "cliente_id=" & Me.cliente & "")) Then
Dim respuesta As Byte
respuesta = MsgBox("Este numero se cambiara. ¿Quiere Actuzalisarlo?", vbYesNo, "Actualizar numero")
If respuesta = vbYes Then
DoCmd.OpenForm "Registro_Clientes", , , "cliente_Id=" & Me.cliente & "", , acDialog
Contacto = DLookup("telefono", "clientes", "cliente_Id=" & Me.cliente & "")
End If
Else
Contacto = DLookup("telefono", "clientes", "cliente_Id=" & Me.cliente & "")
End If

Este código me ayuda a actualizar un números de teléfono

El problema es que tengo en el formulario Registro_Clientes con todos los cuadro de texto bloqueados entonces me gustaría si fuera posible en esta línea:

DoCmd.OpenForm "Registro_Clientes", , , "cliente_Id=" & Me.cliente & "", , acDialog

Cambiarla para que al abrir el formulario desbloquee solo el cuadro de texto del teléfono y le de setfocus para que yo lo pueda cambiar

¿Esto se puede hacer? La base de datos es access

Respuesta
2

Claro que se puede hacer, pero yo te aconsejaría que lo hicieras desde el propio formulario que abres Registro_Clientes. Vamos a suponer que tengo el formulario compras y cuando escribo un producto que no está en la lista me abre el formulario Productos para que lo de de alta. De momento todos los controles están bloqueados, Pero cuando se abre el cursor se va al control Precio

Y en él puedo escribir mientras que los demás siguen bloqueados

El código del evento Al abrir del formulario Productos es

Private Sub Form_Open(Cancel As Integer)
If CurrentProject.AllForms("compras").IsLoaded Then
Precio.Locked = False
Precio.SetFocus
End If
End Sub

Es decir, que si el formulario Productos se abre desde compras desbloquea el control Precio y el cursor se va a el. Mientras que si lo abres "desde afuera" están todos bloqueados.

¡Gracias! Muchas gracias julián excelente como siempre

Julián mira que me salió la primera vez pero después no volvió a funcionar las propiedades del formulario deben de pronto tener algo no se por que es que se me hace super raro

No sé como lo has puesto ni donde los has puesto. Voy a usar Habilitado, aunque es exactamente igual, pero para que veas el tono de los cuadros de texto. En este caso, todos los cuadros de texto del formulario Productos están inhabilitados, por tanto si abro el formulario directamente o desde otro formulario me aparecería así

Ahora en el formulario compras, en producto escribo Gaseosa, que no está en la tabla Productos

Al decirle que sí se abre en vista diálogo el formulario Productos donde puedes ver que sólo el campo Producto está habilitado y tiene el foco(los demás siguen "grises")

Y en este caso igual que el anterior, le he puesto por comodidad mía, ya que el formulario Producto, en este caso, se abre en un registro nuevo.

Private Sub Form_Current()
If CurrentProject.AllForms("compras").IsLoaded Then
Producto.Enabled = True
Producto.SetFocus
End If
End Sub

Pero como te decía sería exactamente igual que con Locked=false

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas