Asignar un dato a un campo dependiendo de otro campo

Estoy realizando una base de datos de access y me he atascado en un par de cosas. Tengo dos combos; el primer combo con una serie de datos que contienen departamentos, y el segundo combo con actividades que realizan estos departamentos. Al abrir la persiana del primer combo elijo un departamento y automáticamente al abrir el segundo combo solo me aparecen las actividades de ese departamento (esto lo he realizado con un SELECT DISTINCTROW). Quiero hacer algo similar pero:
Tener un cuadro de texto o un combo y dependiendo del texto o dato que halla en ese cuadro o combo, me asigne un valor o dato en otro cuadro automáticamente. Ejemplo si en un cuadro1 (puede ser individual o combo) escribo el departamento, en otro cuadro2 (no sería combo) este mire que he puesto en el cuadro1 y me asigne la actividad de ese departamento automáticamente y lo refleje (teniendo en cuenta que solo halla una actividad para cada departamento).

1 respuesta

Respuesta
1
La solución más simple y limpia es utilizar una función de agregado de dominio de SQL, así tenemos:
DBúsq
DMáx
DMín
Existen más funciones si tienes tiempo prueba con ellas. Ahora vamos al tema que nos ocupa, establecer un valor en función de una selección de un combo (Estoy suponiendo que sólo devuelve un valor, es decir, un departamento tiene una actividad)
Suponiendo que tienes estas tablas:
Tdepartamentos tactividades
Cod_Departamento (Clave)        Cod_Actividad
Departamento Actividad
                                                   Departamento (Relacionado con TDEPARTAMENTOS)
Crea un formulario independiente llamado FRMACTIVIDADES con un cuadro combinado llamado CBDEPARTAMENTO y TXTACTIVIDAD y que tendrán las siguientes propiedades:
Cbdepartamento:
Origen de la Fila: Tabla/Consulta  TDEPARTAMENTOS Selecciona Cod_Departamento, Departamento Cierra con POR dile que quieres actualizar. Ahora en número de columnas pon 2 Ancho columnas: 0cm;3cm (Si el valor de la segunda columna el nombre del departamento es corto aumenta el número), cuando finalices cierra las propiedades.
Txtactividad:
Origen del Control: =DBúsq("Actividad";"TACTIVIDADES";"Departamento=Forms![FRMACTIVIDADES]![CBDEPARTAMENTO]
Cierra las propiedades del cuadro de texto.
Ahora tienes que hacer una pequeña operación y es que cada vez que cambies el valor que tiene CBDEPARTAMENTO debes actualizar TXTACTIVIDAD para esto sólo tienes que poner un procedimiento de Evento en en CBDEPARTAMENTO ---- Después de Actualizar y entre Private Sub y End Sub pones
Me. Txtactividad. Requery
Te agradezco la rapidez.
He realizado el pequeño ejemplo que me has puesto y al introducir la opción de búsqueda en origen de control de TXT me da un error "la expresión que introdujo produjo una cadena no validad, una cadena puede tener como máximo 2048 caracteres...).
He intentado modificar la expresión poner corchetes, cambiar Forms por reporst y no funciona. Estoy seguro que algo debo estar haciendo mal, pero no se lo que es.
Un saludo.
Te doy una aclaración, si el campo tiene espacios o signos como como el guión bajo debes utilizar corchetes para delimitar el mismo así puedes tener, también he visto que no he cerrado el último criterio de la expresión y el paréntesis.
=DBúsq("[Actividad_Departamento]";"TACTIVIDADES;"[Departamento Actividad]=Forms![FRMACTIVIDADES]![CBDEPARTAMENTO]")
Ten en cuenta la misma observación en cuanto a que tienes que actualizar el cuadro cada vez que cambies el valor del cuadro combinado.
Gracias, lo aplicaré a la base de datos que estoy haciendo. Muy bien explicado, más teniendo en cuenta que mis conocimientos son muy limitados.
Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas