¿Cómo actualizar la lista de opciones de un cuadro combinado en función la elección previa en ese mismo cuadro en Access?

Tengo un formulario en el que introduzco proyectos. Entre otros datos, debo introducir el estado del proyecto y el tipo de proyecto.

Para eso tengo un cuadro combinado que me da como opciones los estados que tengo incluidos en una tabla T_ESTADO. Hasta aquí todo bien.

Tengo otra tabla que es T_TIPO_PROYECTO que clasifica los proyectos en 4 tipos, y cada uno de esos tipos tiene un workflow diferente, es decir, que todos parten del estado inicial pero luego no todos pueden evolucionar igual.

Tengo otra tabla T_TRANSICION_ESTADO donde en función del tipo_proyecto y del estado_actual, identifico estado_siguiente (pueden ser varios).

Mi duda es la siguiente:

Pongamos que tengo un proyecto 1, que es del tipo 1 y meto su estado que es "en evaluación". Luego quiero actualizar ese estado, pero por ser un proyecto del tipo 1 en el combo ya sólo me deberían aparecer los estados que podrían ir después de "en evaluación" para ese tipo de proyecto y no todas las opciones de estado: que por ejemplo serían "descartado" o "en diseño" (todos estos estados están en la tabla T_ESTADO). Según fuera actualizando debería de ir cambiando la lista de opciones en función de los valores que tengo en la tabla T_TRANSICION_ESTADO.

No sé si me he explicado correctamente.

1 respuesta

Respuesta

Lo que pretendes hacer es lo que se denomina "cuadros combinados en cascada". Hay varias formas de hacerlo, que puedes consultar, por ejemplo en estos ejemplos:

http://siliconproject.com.ar/neckkito/index.php/component/content/article/96-ejemplos-explicados/ejemplos-de-controles/144-combos-en-cascada 

http://siliconproject.com.ar/neckkito/index.php/component/content/article/96-ejemplos-explicados/ejemplos-de-controles/279-cuadros-combinados 

En tu caso tendrías que actualizar el segundo en función de las opciones correspondientes de la tabla T_TRANSICION_ESTADO, si te he entendido bien..

Un saludo.


Hola de nuevo,

Gracias por tu ayuda Sveinbjorn El Rojo. Los cuadros en cascada más o menos entiendo cómo funcionan. 

En mi caso no serían cuadros en cascada, porque lo que quiero es cambiar las opciones que te salen en un mismo cuadro. Yo tengo un cuadro combinado con estados, selecciono el estado_1 y eso va a un registro histórico, dos semanas después el proyecto cambia de estado y voy a ese cuadro combinado y selección otro estado. En este punto, como ya había seleccionado antes estado_1, ahora sólo deberían aparecerme las opciones de estado_2 y estado_3, si elijo estado estado_3, la próxima vez que vaya a cambiar el estado me aparecerán estado_4 y estado_2 por ejemplo, y así sucesivamente.

Gracias por todo!

Un saludo

A ver si te he entendido y esto es lo que quieres:

En el evento "Al entrar" o "Al recibir el enfoque" de tu cuadro combinado (cboEstado, en el código) le generas este código:

If Me.NewRecord Then  'Si es un registro nuevo

Me.cboEstado.RowSource="SELECT * FROM T_TRANSICION_ESTADO"  ' Pones todas las opciones de la tabla

Else  'Si no es un registro nuevo

'Tienes que analizar el valor inicial y cargar los datos en función de él. Si fuera necesario, tendrías que cambiar el tipo de origen a "lista de valores"

Select Case Me.cboEstado

Case "estado_1"

Me.cboEstado.RowSource="SELECT * FROM T_TRANSICION_ESTADO WHERE Estado<>'estado_1'"  'Te mostrará todos los estados menos "estado_1

Case "estado_2"

Me.cboEstado.RowSource="SELECT * FROM T_TRANSICION_ESTADO WHERE Estado<>'estado_2'"  'Te mostrará todos los estados menos "estado_2

Case "estado_3"

'En este, le cambiamos el tipo de origen, para que muestre, por ejemplo "Finalizado"

Me.cboEstado.RowSourceType="Value List"

Me.cboEstado.RowSource="Finalizado"

End Select

End If

'Recargas los datos

Me.CboEstado.Requery

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas