A vueltas con los filtros.

Tengo, en una BD, dos tablas: Eventos y Eventistas.

La TbEventos tiene un índice autonumérico llamado IdEEvento.
La TbEventistas, el índice, también autonumérico, se llama IdEventista, y tiene otro campo llamado IdEvEvento, con el que se relaciona con la TbEventos.
Con ellas he creado un formulario, FrEventos, con los datos de la TbEventos, con un subformulario, SFrEventos, con la TbEventistas, tambien con todos sus datos.
Hasta aquí bien, si eligo un evento en el formulario, el Subformulario me da los datos de los que están apuntados a ese evento.

Tengo también un informe, InEventos, con un select con todos los campos de ambas tablas

El problema viene cuando intento, a través de un botón, que solo me imprima el evento que tengo en pantalla, y los eventistas, que asisten a ese evento.
Si no le doy filtro, el programa me presenta el informe con los datos del evento que tengo en pantalla, y todos los eventistas, sean o no de ese evento.
Le he puesto filtors en el select del InEventos, se los he puesto en el cógido del botrón imprimir, pero ¡Que si quieres arroz, Catalina!
Unas veces me da error de tipos, otras de operación muy compleja, y otras..., ¡que se yo! Vamos, que no lo se hacer.

¿Me ayudáis?, gracias

2 respuestas

Respuesta
1

Viendo la imagen de tu informe, yo diría que no lo tienes diseñado como informe con un subinforme, que como bien te indica Icue, debería resolver tu problema.

Por lo que dices, has hecho tu informe a partir de una SQL, y bien pudiera ser que la SQL no esté del todo correcta y te relacione cada Evento con todos los Eventistas, pero para saberlo tendrías que poner la SQL que estás usando.

Y en cuanto al filtro, en el botón de tu formulario, en la instrucción que abre el informe solo has de ponerle el filtro así:

DoCmd.OpenReport "InEventos",acViewPreview,,"IdEEvento=" & Me.IdEEvento

Si el informe está bien diseñado te saldrá ya solo el evento que tengas en pantalla con los asistentes a él únicamente.

Gracias Sveinbjorn, pero si no lo tuviera bien relacionado, ¿como puede ser que cuando elijo el primer eventoxsolo se relacionan en el subformulario los apuntados a ese evento, y cuando pongo el segundo, solo se ven los del segundo?

Debe ser el informe el que esté mal, ¿no?

Este es el select que lleva el informe.

Esta es la SQL del select: 

SELECT TbEventos.IdEEvento, TbEventos.EEvento, TbEventos.EFecha, TbEventos.EHora, TbEventos.ELugar, TbEventos.EDireccion, TbEventos.EContacto, TbEventos.EPrecio, TbEventos.ENotas, TbEventistas.IdEventista, TbEventistas.IdEvEvento, TbEventistas.EvNombre, TbEventistas.EvFcPago, TbEventistas.EvPago, TbEventistas.EvAsistentes, TbEventistas.EvNotas
FROM TbEventos INNER JOIN TbEventistas ON TbEventos.[IdEEvento] = TbEventistas.[IdEvEvento]; No tengo ningún criterio en ninguno de los campos, ya que me he cansado de ponerlos en el NIP, en el TbEventos.EEvento, etc.

¡Gracias! 

El filtro que has puesto me funciona. 

Muchas gracias.

A ver, en los formularios no tienes problemas porque tienes un formulario basado en la tabla "padre" (en tu caso TbEventos) y un subformulairo basado en la tabla "hija" (TbEventistas). Al añadir el formulario en el formulario, el propio Access detecta que existe una relación entre ambos (la misma relación que existe entre las tablas), y ya los relaciona solo sin que tengas que hacer nada. Por eso te funciona y te muestra correctamente los asistentes a cada evento.

En el caso del informe, por lo que veo del pantallazo del informe (ya que no pusiste su diseño) es que no tienes un informe con un subinforme, sino un único informe basado sobre una consulta (la SQL). En la SQL no veo nada mal, por lo que deduzco que en el informe tienes algo mal diseñado, (un agrupamiento, campos en una sección inadecuada...), pero no puedo concretarte nada mas sin analizarlo a fondo.

De todas formas, si abriéndolo filtrado te funciona, tampoco le des muchas más vueltas...

Así lo haré, gracias.

Pero no os vais a librar, tengo, como dicen en facebook, mas problemas que un libro de matemáticas. Así que os seguiré molestando, mientras tengáis la amabilidad de estar ahí para aguantarnos.

Un saludo

Respuesta
1

Si el formulario y el subformulario están relacionados por un campo común (no hace falta que se llamen igual)es imposible que te suceda eso. Lo mismo es válido para el informe y subinforme(supongo que lo tendrás así)

Prueba a hacer el informe con el asistente.

Si quieres, haz una copia vacía y me la mandas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas