| Usuario |
Pasar parámetros a informe mediant... |
Desconocido
|
| Enviado - 26/5/2004 |
| |
Hola a todos, este es mi primer mensaje en este foro y espero que no sea el último.
Os escribo para ver si me podeis solucionar un pequeño problema que tengo a la hora de imprimir 25 informes. Trataré de explicarme lo mejor posible.
Tengo (en continua evolución) una base de datos que controla los clientes, proveedores y facturas de una pequeña empresa de suministros navales, en ella hay varios campos fundamentales sobre los que calculamos medias, obtenemos informes del inventario, de los clientes y bastantes opciones más.
Pero hay un campo que destaca sobre los demás por el uso que le damos en las consultas, es el campo FechaEntrada, ya que todos los días y meses imprimimos unos informes resumen (25 en total) para que los responsables de contabilidad y almacen trabajen en función de los resultados del informe.
Para obtener esos informes individualmente no tenemos ningún problema, accedemos al formulario correspondiente (desde el que vemos primero la información en pantalla y luego lanzamos el informe), al entrar en cada sección salta un pequeño formulario emergente mediante el cual se seleccionan dos fechas para establecer el periodo de tiempo al que se referirá el/los listado/s.
Para ello hemos creado varias consultas que devuelven lo que necesitamos en cada momento atendiendo a los parámetros establecidos, todas las consultas tienen un criterio común que es el siguiente:
FechaEntrada: Entre SiInm([Forms]![2FechasClientes]![primeraFecha] Es Nulo;#1/1/1980#;[Forms]![2FechasClientes]![primeraFecha]) Y SiInm([Forms]![2FechasClientes]![SegundaFecha] Es Nulo;#1/1/2060#;[Forms]![2FechasClientes]![SegundaFecha])
La idea de establecerlo así viene dada por el hecho de que si quien está usando la base de datos en ese momento no introduce ninguna fecha le saldrá un listado por el total de clientes... de la base de datos (para eso ese amplio margen entre los años 1980 y 2059).
Hasta aquí todo funciona perfectamente, vemos el formulario correspondiente en pantalla e imprimimos el informe (basado en la correspondiente consulta) desde un botón preparado para ello.
El problema viene cada trimestre que tenemos que sacar un listado total de las 25 consultas principales de la base de datos, es decir, un informe que no tenga en cuenta ninguna fecha, sino que imprima todos los registros para cada uno de los 25 formularios desde esos supestos años (1980 a 2059).
Tenemos un botón que lanza todos los informes a la impresora, pero que no funciona todo lo bien que sería deseable. El botón tiene el siguiente código para cada Informe:
Private Sub ImprimirGlobal_Click()
With DoCmd
.Openreport "ClienteMasFactura", acviewNormal
.... ' Aquí irían los 24 informes restantes como el anterior
End With
End Sub
El problema que tenemos es que al hacer clic en ese botón se nos solicitan 50 fechas (dos por cada informe), si le vamos dando a aceptar las 50 veces se imprimen correctamente los informes tomando esas fechas de 1/1/1980 y 1/1/2060, pero evidentemente esto no es lo más cómodo.
Supongo que tiene que haber alguna forma de pasarle esos parámetros ([Forms]![2FechasClientes]![primeraFecha] y [Forms]![2FechasClientes]![SegundaFecha]) con los valores 1/1/1980 y 1/1/2060 directamente desde el código para que no los solicite, pero no encuentro manera (igual es que ya estoy dando vueltas sobre mi cabeza en balde), me imagino que tendrá que ver con la condición Where que se puede asignar a esa línea .OpenReport "Informe",, pero no encuentro al forma de pasarle el valor de un campo del formulario.
A ver si podéis echarme una mano y ponerme exactamente lo que debo añadir que me va a volver loco.
Anticiparos las gracias y perdonarme si no me he explicado del todo bien.
Un saludo.
D1n0 |
| |
|
Skakeo
7 Mensaje(s)
|
| Enviado - 22/6/2004 |
| |
Private Sub ImprimirGlobal_Click()
Dim strCondicion As String
'Aqui creas la condicion where del informe
'Fecha inicial y fecha final
strCondicion = "Fechainicio >=#" & fechaini & "# FechaFin <=#" & fechafin & "#"
With DoCmd
'Si pones las comas lo abriras segun esos parametros
.OpenReport "rptFechas", acViewNormal, , strCondicion
End With
End Sub |
| |
|
Skakeo
7 Mensaje(s)
|
| Enviado - 22/6/2004 |
| |
Siguiendo tu ejemplo:
Dim fechaIni as Date
Dim fechaFin as Date
FechaIni = me.txtFechaInicial
FechaFin = me.txtFechaFinal
Dim strCondicion As String
strCondicion = "Fechainicio >=#" & fechaini & "# FechaFin <=#" & fechafin & "#"
With DoCmd
.OpenReport "rptFechas", acViewNormal, , strCondicion
End With
lo unico que te puede dar un error con la fecha entonces deberas cambiarlo a fromato "mm/dd/yyyy"
Espero que te ayude
Un saludo
Skakeo® |
| |
|
Skakeo
7 Mensaje(s)
|
| Enviado - 22/6/2004 |
| |
Siguiendo tu ejemplo:
Dim fechaIni as Date
Dim fechaFin as Date
FechaIni = me.txtFechaInicial
FechaFin = me.txtFechaFinal
Dim strCondicion As String
strCondicion = "Fechainicio >=#" & fechaini & "# FechaFin <=#" & fechafin & "#"
With DoCmd
.OpenReport "rptFechas", acViewNormal, , strCondicion
End With
lo unico que te puede dar un error con la fecha entonces deberas cambiarlo a fromato "mm/dd/yyyy"
Espero que te ayude
Un saludo
Skakeo® |
| |
|
|
|