¿Cómo puedo habilitar opciones de un grupo de opciones utilizando Microsoft Access 2010?

Tengo un problemilla con un grupo de opciones en Access 2010, a ver si me puedes echar una mano:
En este grupo de opciones, tengo 10 opciones que indican distintos "estados" pero quiero que se me vayan habilitando dependiendo de la opción actualmente seleccionada.
Es decir, si pincho la opción 1, se me habilitan la 2 y la 3 pero el resto permanecen deshabilitadas. Si ahora pincho en la 3, se me habilitan la 4 y la 6 y el resto pasan a estar deshabilitadas.
Esto lo he conseguido con macros que actúan sobre la propiedad "Habilitar" de cada uno de los botones de opción en función del valor del grupo. Estas macros las he insertado en el evento "Al activar registro" del formulario. Si lo intento con otros eventos no funciona.
Hasta aquí bien, el problema es que para hacer esto debo ejecutar un "Requery" de todo el formulario (o pulsar la tecla F5). Si hago esto se me habilitan las opciones correspondientes pero siempre se va al primer registro del formulario.
Si utilizo otras alternativas como "refresh" o una macro con Ejecutar comando "actualizar" no hace nada, sólo funciona con Requery o F5.
¿Existe alguna manera de realizar este refresco y que se mantenga en el registro que se está editando?
¿Quizás hay alguna manera más sencilla de hacer lo que pretendo?

1 respuesta

Respuesta
1
Sin ver tu BD y cómo tienes estructurada "la cosa" en ella es difícil darte una respuesta satisfactoria. Te voy a explicar un sistema, pero ya te digo que no sé si será el que tú necesitas. Voy a suponer que las opciones son independientes (que no están ligadas a campos en una tabla). Si estuvieran ligadas deberíamos cambiar ligeramente el proceso. Si fuera así me comentas.
Lo primero que debes hacer es quitar todo el tema de las macros.
Yo te recomiendo que lo pruebes sólo con tres botones primero (para evitarte todo el trabajazo de programar 10 botones). Te pongo pues el ejemplo sólo para tres botones, pero la mecánica es muy simple y no creo que tengas problemas para extrapolarlo a todas las opciones.
Vamos allá:
- Imaginemos que sólo tienes tres botones de opción. Lo primero que debes hacer es nombrarlos (si no los tienes nombrados ya) para poder reconocerlos en el código. Para ello debes sacar las propiedades de cada uno de ellos y te vas a la pestaña Otras -> Nombre, y ahí escribes un nombre descriptivo. Por ejemplo, yo los llamaré
Opc1
Opc2
Opc3
- Definamos la situación inicial: al ir a un nuevo registro la opción 2 debe estar deshabilitada, y la 1 y 3 deben estar habilitadas, pero sin estar marcadas, por ejemplo. Para definir dicha situación inicial debes programar el siguiente código en el evento "Al activar registro" del formulario:
...
Private Sub ...
With me
'Asignamos valores para las opciones
.opc1.value=False
.opc2.value=False
.opc3.value=False
'Activamos las opciones iniciales
.opc1.enabled = True
.opc2.enabled = False
.opc3.enabled = True
End With
End Sub
...
- Supuesto 1: si marco la opción 1 se me habilita la 2 y se deshabilita la 3
Para ello tienes que sacar las propiedades de opc1 e irte a pestaña Eventos -> Después de actualizar, y generar el siguiente código:
...
Private Sub ...
If me.opc1.value=true Then
With me
'Habilitamos la opción 2
.opc2.enabled=True
'Deshabilitamos la opción 3
.opc3.enabled=False
End With
End If
End Sub
...
- Supuesto 2: si marco la opción 3 se me habilitan todas las opciones
En el mismo evento "Después de actualizar", pero del control opc2, generas el código:
...
Private Sub ...
If me.opc3.value=true Then
With me
'Habilitamos el resto de opciones
.opc1.enabled=True
.opc2.enabled=True
End With
End If
End Sub
...
Como ves la mecánica es sencilla. El gran trabajo es programar todas las combinaciones que necesitas. Si, además, necesitas cambiar los valores que haya en las opciones que se deshabilitan tendrás que añadir las líneas de código correspondientes; es decir:
.opcX.value=False
.opcX.enabled=False
A ver si con estas indicaciones puedes arreglar tu "problemilla".

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas