Imprimir el informe de una consulta con tres filtros Access

Tengo una trancadera con un informe.

Resulta que de un formulario que tiene tres cuadros combinados donde selecciono las tres opciones (a veces dos) se hace una consulta donde quedan filtrados esos datos. Por una cuestión de trabajo y prolijidad, esta consulta se refleja en otro formulario tipo tabular donde los resultados tienen una opción para ir a ese registro en particular.

Es decir, como ejemplo, la consulta tira todos los autos marca "cuadro combinado 1", modelo "cuadro combinado 2", color "cuadro combinado 3"

El resultado son varios (una lista) porque además la consulta tira todos los años. Entonces, al lado de cada uno de esos resultados hay un comando donde al hacer click voy a ese registro seleccionado.

Bien, ese formulario lo quiero imprimir mediante un informe que hago desde la consulta, pero al accionar el comando (botón) imprimir, me vuelve a pedir con cuadro de diálogo que ingrese el cuadro combinado 1, luego el 2 y luego el 3, y ahí me lanza el informe que es correcto y completo.

No encuentro cómo hacer para que imprima el informe directamente sin que vuelvan a aparecer los cuadros de diálogo.

Sé que la cuestión está en la condición Where de la macro o sentencia VBA, pero no logro destriparlo. Los registros cuentan con una Id autonumérica sin duplicados, o sea que son únicos.

2 respuestas

Respuesta
2

Tabaré: Para no dar muchos palos de ciego, si puedes poner aquí la consulta, nombre del informe, etc, al menos para mi sería una mejor pista para sugerirte alguna solución. Un saludo >> Jacinto

Esta es la consulta:

SELECT DISTINCT Expedientes.Número, Expedientes.[Razón Social], Expedientes.[Estado Expte], Expedientes.TipoExpte, Expedientes.Responsable1, Expedientes.Responsable2, Expedientes.Id

FROM ((Expedientes INNER JOIN [Tipo Expediente] ON Expedientes.TipoExpte = [Tipo Expediente].TipoExpte) INNER JOIN [Estado Expte] ON Expedientes.[Estado Expte] = [Estado Expte].InfEstado) INNER JOIN Responsable ON Expedientes.Responsable2 = Responsable.Responsable2 OR Expedientes.Responsable1 = Responsable.Responsable1

WHERE (((Expedientes.[Estado Expte])=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado4]) AND ((Expedientes.Responsable1)=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado0])) OR (((Expedientes.TipoExpte)=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado17]) AND ((Expedientes.Responsable1)=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado0])) OR (((Expedientes.[Estado Expte])=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado4]) AND ((Expedientes.Responsable2)=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado0])) OR (((Expedientes.TipoExpte)=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado17]) AND ((Expedientes.Responsable2)=[Formularios]![Filtro Resp y EstExpte]![Cuadro_combinado0]))
ORDER BY Expedientes.Número;

Lo que filtra es lo que mando al informe, o sea, Número, Razón Social, Estado Expte, TipoExpte, Responsable1, Responsable2, Id.

La cuestión es que el resultado de la consulta la veo en un formulario, y quiero que ese resultado se imprima al hacer click en el botón imprimir que está en ese formulario. 

Lo soluciono fácil si pongo el botón en el formulario buscador (el que tiene los cuadros combinados), pero recién veo el resultado después de imprimir.

Lo que necesito es que primero me tire la lista en el formulario para verla y si es lo que necesito, ahí sí la imprimo en el informe.

Si no te mando toda la base, a mi no me molesta.

Tabaré: Prueba poniendo en el Evento Form_Open del "Informe". Yo no lo he probado

Me.RecordSource = Forms![Filtro Resp y EstExpte].Form.RecordsetClone

Lógicamente ha de estar abierto el Formulario. Saludos >> Jacinto

Puse esto en el evento report_open pero tira error 7951. Referencia no válida a la propiedad RecordsetClone

Tabaré: Quizá si puedes, como apuntas, mejor me envías la BD y le doy una ojeada, porque cualquier cosa puede hacer que alarguemos el post, sin resultado. Mis saludos >> Jacinto

Respuesta
2

Suponiendo que los combinados se llamen Marca, Modelo y Color, porqué no pruebas a poner en el botón

docmd.openreport"nombreinforme",acpreview,,"Marca='" & me.marca & "' and Modelo='" & me.modelo & "' and color='" & me.color & "'""

Hola Icue, no me toma el Me. porque los cuadros combinados vienen de otro formulario, del formulario buscador. 

Este formulario "buscador" tiene los tres cuadros (que puedes seleccionar sólo dos también) y luego un comando (botón) buscar que dispara la consulta que se muestra en otro formulario. Y en éste segundo formulario es que está el botón imprimir.

Tendría que hacer referencia al formulario buscador, pero éste se cierra luego de oprimir el botón Buscar.

Hola Icue, no sé si se puede pero deberían quedar las condiciones de la consulta en algún lado para que al cerrarse el formulario buscador quedaran los mismos parámetros para el informe

En ese caso tienes que poner:

DoCmd.OpenForm "clientes", , , "marca=...."

En el caso de la consulta, si en criterios has puesto, por ejemplo, debajo de marca

Forms! Nombredelformulario! Marca

Etc

Y esa misma consulta la usas como origen del formulario que quieres abrir, al poner en el botón simplemente

Docmd. Openform"el que quieres abrir"

Ya te lo abre usando lo criterios del primer formulario, y si usas esa misma consulta como origen de informe, cono poner

Docmd. Openreport"nombre informe" pasa lo mismo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas