Como pasar el valor de un cuadro combinado a otro

Hola espero que puedas ayudarme, necesito pasar el valor de una clave seleccionada de un cuadro combinado a otro cuadro combinado para filtrar los registros de ese cuadro, ambos cudros combinados tienen su origen desde una tabla y funcionan como catálogos en el formulario de captura

1 respuesta

Respuesta
1
Copio y pego de mi web de oferta de soporte y desarrollo:
Tip 5 .- Limitar OrigenRegistro de un Cuadro Combinado con otro C. c. (y en SubForm.)
Introducción:
Tengamos un cuadro combinado con origen en tabla tipos de materias primas (tTipos) y otro cuadro con origen en tabla materias primas (Mp)
Ambas tablas tienen en común el campo materia prima (en Mp es clave única y en tTipos es repetible) de un tipo a múltiples Mp's (uno a varios)
Nota: tipos de materia prima es una clasificación de la misma, por ejemplo el tipo 'polietileno' comprende varias materias primas:
Polietileno de alta densidad, ¿de la marca aaa proveedor xxx?
¿Polietileno baja densidad, marca bbb, proveedor yyy?
Etc.
Limitar o Filtrar un cuadro combinado según el valor de otro
Formulario: fOfLin
Trata de la composición de un envase a fabricar (de las distintas materias primas, Y/o tipos de materias primas) que lo componen
En primer lugar seleccionamos un Tipo de materia prima,(cuadro combinado sTipo)
En segundo lugar, si queremos especificar la materia prima en concreto podemos usar un segundo cuadro combinado, eCodMp, el cual debe reflejar solo las materias primas del tipo previamente especificado. Esto se consigue con algo como el siguiente código:
Sub eCodMp_Enter ()
If Not IsNull(Me!stipo) Then
Me!eCodMp.rowsource = "SELECT DISTINCTROW CodMp, desc1Mp, desc2Mp FROM Mp WHERE ((Mp.Tipo=forms!fOfLin!sTipo));"
Me!eCodMp.Requery
'else (if isnull)
'Me!eCodMp.rowsource = "SELECT CodMp, desc1Mp, desc2Mp FROM Mp;"
End If
End Sub
Ídem al caso anterior cuando fOfLin es un SubFromulario (de fOfCab)
El código anterior no funciona en este caso, puesto que el form actual es fOfCab (de hecho access nos pide el parámetro forms! FOfLin! STipo).
Tampoco sirve tener abierto el Subform fOfLin de fondo. En dicho caso no se nos pregunta nada, pero tampoco se filtran los Mp del tipo actualmente activado en 'este' subformulario, sino en el de 'el otro' (el que se abre como principal al fondo)
La solución más cómoda que he encontrado para poder seguir usando la idea del código del primer caso consiste en crear un control extra en el formulario principal (digamos campo100, el cual se encarga de copiar el valor de sTipo a un punto donde access pueda identificarlo
Sub eCodMp_Enter ()
If Not IsNull(Me!stipo) Then
forms!fOfCab!campo100 = Me!stipo
Me!eCodMp.rowsource = "SELECT DISTINCTROW MP.CodMp, MP.desc1Mp, MP.desc2Mp FROM MP WHERE ((MP.Tipo=forms!fOfCab!campo100));"
Me!eCodMp.Requery
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas