Campos condicionados a cuadro combinado

Si novato en Access y llevo buscando bastante en la red pero no encuentro la respuesta, y supongo que será sencillo.. O no. La idea es hacer una base de datos sobre actas de reuniones de mi empresa.

Necesito que en un campo de un registro (que es una cuadro de lista), dependiendo del valor seleccionado, automáticamente me asigne valores prefijados en otros campos de dicho registro.

Es decir, necesito dos o más campos condicionados al valor introducido en un primer campo.

Ejemplo de tabla:

Campos: nº orden (autonumérico), parte, sección y tipo.

Tipo es un campo como cuadro combinado de valores: proposición, aprobación, pregunta.

Sección es un campo que puede tener 3 valores:Proposiciones de ponentes, Información y Preguntas.

Parte es un campo que puede tener 3 valores: Acta Anterior, Parte Resolutiva y Control.

Si selecciono proposición debe generarse automáticamente en el campo parte el valor Parte Resolutiva y en el de sección Propuestas.

Si selecciono Aprobación automáticamente se debe generar el valor Información en Sección y Acta Anterior en Parte.

Aclarar que Sección y Parte son también dependientes, lógicamente, entre sí.

1 respuesta

Respuesta
1

Lo que tienes que hacer es lo siguiente:

Abre tu formulario en vista diseño, saca las propiedades (con el botón derecho) del cuadro combinado (tu campo Tipo), y en la pestaña Eventos, localizas la fila "Después de actualizar", y le das al botoncito con los tres puntos [...] que aparece a la derecha.

En la ventana emergente seleccionas Generador de código. Se te abrirá el editor de VBA. Y te aparecerá el cursor entre estas dos lineas:

Private Sub Tipo_AfterUpdate() y End Sub.

Pues bien, entre las dos escribes este código:

Dim miSeleccion as String

miSeleccion=Nz(Me.Tipo,"")

Select Case miSeleccion

Case "proposición"

Me.Parte="Parte Resolutiva"

Me.Seccion="Propuestas"

Case "aprobación"
Me.Parte="Acta Anterior
Me.Seccion="Información"

Case "pregunta"
Me.Parte="Parte Resolutiva"
Me.Seccion="Control"

Case Else

Me.Parte=""
Me.Seccion=""

End Select

No sé si esos son los valores exactos que quieres, porque no me cuadra con los valores que dices arriba, pero si pillas la idea, no tendrás problema en "corregirlo".

Gracias Sveinbjorn por la rápida respuesta, aunque me está dando un error...tengo que echarle más rato para revisar qué escribo mal.

Me gustaría que tuviese más flexibilidad de futuro, es decir, que pudiese añadir Secciones o Partes adicionales ¿eso es posible? ¿o siempre tendría que hacerlo con código fuente? lo digo porque al usuario final no le veo editando este código (al igual que yo...)

Yo estaba pensando más en tablas vinculadas pero no sé si es la solución...

Gracias por anticipado y un saludo,

Como lo quieres más flexible, sí pdrías usar una tabla relacionada. Como no sé exactamente cómo tienes montada tu BD, ahí van unas "ideas generales":

1º/ Supondré que tienes una tabla (TActas) que, entre otros, tiene los campos que citas en tu pregunta: nº orden (autonumérico), parte, sección y tipo. Si esto no es así, lo que te voy a comentar no tiene sentido hacerlo... pero te podría indicar otras alternativas

2º/ Lo primero que tienes que hacer, es crear una tabla nueva con estos campos: Id (autonumerico), tipo, parte y seccion. En esta tabla, escribes los valores que comentas (y los que quieras añadir en un futuro):

Id--------->Tipo-------------->Parte------------->Seccion

1---->Proposición----->Parte Resolutiva----->Propuestas

2---->Aprobación----->Acta Anterior---------->Información

3---->Pregunta--------> Control---------------->Preguntas

A esta tabla la llamas como quieras, yo usaré como nombre TDependiente

3º/ En tu tabla "original" (TActas), eliminas los camposTipo, Parte y Seccion, y vuelves a crear el campo Tipo, pero ahora, en tipo de datos, seleccionas Asistente para búsquedas. Usando el asistente, seleccionas la tabla TDependiente, todos los campos de la tabla, y en el paso donde te deja configurar el ancho, ajustas los campos para que sólo se vea la columna del campo Tipo.

Al guardar, ya te crea las relaciones entre ambas tablas.

4º/ Abre tu formulario en vista diseño, elimina el campo Tipo, y vuelve a crearlo, usando la opción/boton "Añadir campos existentes". Comprueba en sus propiedades que en la pestaña Otras-Nombre, ponga Tipo, si no es así, se lo cambias

Y para acabar, en tu campo Parte, que ahora tendrá la marquita verde que señala un error, le borras lo que pone en el cuadro (supuestamente Parte), y le escribes esto:

=[Tipo].[Column](2)

Y en el campo Sección, la misma operación, pero escribes esto:

=[Tipo].[Column](3)

5º/ Para terminar, bloquea los campos Parte y Sección, para que no puedan modificar los valores introducidos. Esto lo haces en la pestaña Datos->Bloqueado:Sí

Luego, si necesitas hacer un informe sobre la tabla, y necesitas tener los valores de parte, seccion... lo que tienes que hacer es una consulta sobre las dos tablas, cogiendo los cmapos que te interese mostrar de cada tabla, y hacer el informe sobre la consulta, en vez de sobre la tabla.

Te subo una mini bd de ejemplo, para que lo veas más claro: http://filebig.net/files/GPiWCwGfMm

¡Eso es justamente lo que quería! exactamente así!!!!!

Impresionante, la verdad, llevo varios días buscando la respuesta y hoy, en apenas unas horas, Sveinbjorn, me has solucionado la papeleta ¡y con ejemplo incluido!

Me voy a hacer fijo de esta página y hacer seguimiento de tus conocimientos.

Muchísimas gracias y un saludo,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas