Como filtrar contactos por medio de un combo de grupos, si no existe el campo en la tabla contactos

Tengo una BBDD Access 2003 en la que tengo las siguientes tablas:

Contactos: IDNombre, Nombre, Apellidos

(Donde Almaceno contactos de teléfono)

Grupos: IDGrupo, NombreGrupo

(Donde almaceno los Grupos de contactos que tengo)

DetalleGrupo: ID Grupo, IDNombre

(Tabla que relaciona ambas tablas)

Mi pregunta es la siguiente:

Tengo un Formulario de Contactos donde muestro todos los datos del contacto y este a su vez tiene un subformulario donde se muestran los grupos a los que pertenece cada contacto. En el encabezado de dicho formulario he colocado un combo donde aparecen todos los grupos existentes para poder filtrar el formulario de contactos por medio de los grupos. Este combo muestra tanto el Grupo como su IDGrupo, Nombre y el Total de contactos que tiene cada grupo.

Mi problema es que no sé cómo Filtrar los contactos para que aparezcan solo los que pertenezcan al grupo que he seleccionado en el Combo cuando se seleccione algún grupo del combo. Las tablas están relacionadas, pero no tengo ningún Campo en la Tabla de Contactos que haga referencia al Grupo. ¿Cómo puedo hacerlo o que código he de ponen en el evento AlActualizar del combo para que me filtre el formulario de contacto y aparezcan solo aquellos contactos que pertenezcan al grupo seleccionado.

1 respuesta

Respuesta
1

Lo que tienes que hacer es dar el origen del formulario en la acción Al hacer clic del cuadro combinado, sería algo parecido a lo que tengo en la página: http://angelessebas.es/ en el apartado formularios supuesto: Filtrar un Formulario mediante un Cuadro Combinado
Lo que pasa es que en tu caso, en la sql, tendrás que vincular las tablas: Contactos y DetalleGrupo
Supongo que el cuadro combinado te devuelve el valor idGrupo (es decir, que está es su columna dependiente) supongo que el cuadro combinado se llama selGrupo, en sus propiedades, en la acción Al Hacer clic ---> procedimiento de evento ---> picas en el cuadrado de los ... Para abrir el generador de código y ahí damos el origen del formulario (RecordSource)
Form.RecordSource="SELECT * FROM Contactos INNER JOIN DetalleGrupo ON Contactos.idnombre=DetalleGrupo.idnombre WHERE DetalleGrupo.idGrupo='" & form!selGrupo.Value & "'"
Es decir, selecciona todos los campos de la tabla contactos unida a la tabla DetalleGrupo por el campo idNombre cuyo idGrupo de la tabla DetalleGrupo sea igual al valor seleccionado en el cuadro combinado selGrupo
Me cuentas.

Mil Gracias por hacerme ver el problema que existía.

El problema no era del todo del Access, sino que al introducir datos los usuarios no respetaron las relaciones de las tablas que se le han colocado para vincularlas y teníamos varios Contactos sin Grupo Asignado, que desaparecían "misteriosamente" al filtrar y eliminar el filtro. Al Quitar el filtrado se quitaba de un RecordSource que no es el original del Formulario y que busca los contactos que tienen grupos asociados SOLO, por eso no aparecían los que están sin grupos. Les he indicado cual es el problema y les solucioné el tema volviendo al RecordSource Original cuando eliminan el filtrado.

La BBDD Original no le pusieron relaciones ni nada por el estilo, y posteriormente le añadieron las relaciones entre tablas como debían, pero existían datos no relacionados, que son los que se perdían. Eso o modificaron a pelo la tabla para eliminar los grupos a los contactos... Quién sabe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas