imprimir formulario filtrado desde informe

07/06/2012 - 09:54 por Victor | Informe spam
Buenos dias. Office 2010
Tengo un formulario (que se nutre de una consulta)con su "vista predeterminada" en "Hoja de datos" el cual aplico filtros (como si de una hoja de excel se tratara) y deseo que este filtrado poderlo imprimir (claro, atraves de un informe). Como esta en Hoja de Datos, lo que hago es crear otro formulario, donde incrusto el subformulario y le añado un botón. Conseguir que este botón me abra el informe no es un problema (el informe es copia exacta del subformulario que filtro), pero mi problema esta en que no consigo que el informe me muestre a imprimir los campos filtrados, sino que me los muestra todos (perdiendo su funciona en este caso).

He estado mirando mucho, lo he hecho de varias maneras y en varias ocasiones (con lo cual he aprendido mucho y visto varias formas) y ultimamente he visto una atraves de codigo apareciendo este codigo modelo como una buena opción, pero... no consigo que me funcione.

¿Alguien me podría ayudar? Dado que no encuentro el hilo que lo detallen hasta el punto de que yo lo pueda reproducir satisfactoriamente.

El codigo que intento y no me funciona:

Private Sub Comando20_Click()
Dim criterio As String
If Me.FilterOn Then
criterio = Me.Filter
Else
criterio = ""
End If
DoCmd.OpenReport "Inf_ListadoCURSOS", acViewPreview, criterio
End Sub

Como detalle decir lo siguiente (uno ya no sabe si esto pueda ser de ayuda):
La consulta se nutre de 3 tablas conectadas. No me da esto problemas en ningun otro sitio (es decir, tengo una tabla "pacientes" otra "telefonos" y otra "tratamientos" de tal forma que cada paciente tiene asociado 1 o varios telefonos y a su vez 1 o varios tratamientos).

Gracias

Preguntas similare

Leer las respuestas

#16 Victor
08/06/2012 - 21:44 | Informe spam
Pues

MsgBox Me.FilterOn
Me da FALSO! Asi es, ¿que significa eso?¿ Debería darme VERDADERO?
Pues modifico el codigo que asi:

Private Sub Comando127_Click()
Dim criterio As String
'If Me.FilterOn Then
FilterOn = True
criterio = Me.Filter
'Else
'criterio = ""
'End If
MsgBox Me.FilterOn
DoCmd.OpenReport "IListC", acViewReport, , criterio
End Sub

Y, al margen de que filteron me da verdadero, el filtro sigue sin correcto (es decir, el informe me sigue sin filtrarse correctamente).

Ya hago lo del punto, pero yo no se verle la ultilidad.
Respuesta Responder a este mensaje
#17 Victor
09/06/2012 - 01:21 | Informe spam
Vale, ya veo una cosa (seguramente importante)
He creado una base de datos nueva, de cero.
La he hecho muy simple: (tabla con nombre y apellido) he cumplimentado con 4 personas de 2 familias distintas.
He creado formulario normal con boton directo y despues el informe. Le he aplicado el codigo esto, y me ha ido a la primera.
He creado un formulario donde le meto el otro formulario como subformulario, le añado el boton al segundo form, el codigo, aplico el filtro al subform y NO ME VA!
O sea, que la cosa radica en eso!! Al usar el subform es cuando se pierde, no?
Respuesta Responder a este mensaje
#18 Victor
09/06/2012 - 01:30 | Informe spam
Es mas, acabo de hacer la misma prueba en mi base de datos original (o sea, el hacerlo en un formulario normal) y tambien me funciona correctamente.
Entonces, si yo deseo poder tener los datos al estilo hoja de calculo al aplicar filtro (o el autofiltro), para poderle aplicar los filtros de forma fácil y rápida, claro, así no le puedo añadir un botón. ¿Cómo lo hago para meter el codigo y ejecutarlo una vez ya tengo aplicados los filtros? ¿Como ejecutaria en la situacion que funciona la acción?
Respuesta Responder a este mensaje
#19 Victor
09/06/2012 - 01:48 | Informe spam
Si creo el formulario como Hoja de Datos, no puedo ponerle un boton para ejecutar el codigo, y si creo otro formulario para embeberlo como subformulario y al lado ponerle el boton con el codigo, no me va (el codigo debe hacer referencia al formulario y no al subformulario embebido).
¿Cómo se hace esto?
Respuesta Responder a este mensaje
#20 Victor
09/06/2012 - 02:11 | Informe spam
Y me sigo preguntando...

para comunicarse desde el formulario con el subformulario, ¿se puede hacer asi?

Mira este codigo, modificado pero para entender la idea, miremos:

Private Sub Comando127_Click()
Dim criterio As String
If Me.FilterOn Then
FilterOn = True
criterio = Me.Forms![02_LC].Filter
Else
criterio = ""
End If
MsgBox Me.Forms![02_LC].Filter
DoCmd.OpenReport "IListC", acViewReport, , criterio
End Sub


Vamos, que donde de forma normal hay:

criterio = Me.Filter

Si podemos cambiarlo asi :

criterio = Me.Forms![02_LC].Filter

para que me busque la informacion del subformulario en vez.

Y caso de que no se pueda, ¿cómo lo podriamos hacer?

Gracias
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida