Filtro informe

Tengo un formulario con 2 fechas DESDE(FECHA1) y HASTA (FECHA2), quiero filtrar un informe a través de ellas. Eso ya lo tengo, pero quiero indicar que si en el formulario no se indica ninguna fecha (se deja el campo vacío) coja todas las fechas que tiene.
Pongo la siguiente instrucción pero no funciona.
DoCmd.OpenReport "Pedidos seleccion", acViewPreview, , iif ([Cabecerapedidos_FechaPedido]="","01/01/1900", "[Cabecerapedidos_FechaPedido]>=Forms!Formulario1!Fecha1) and iif ([Cabecerapedidos_FechaPedido]="","31/12/2100", [Cabecerapedidos_FechaPedido]<=Forms!Formulario1!Fecha2), acWindowNormal
Me da error de compilación, error de sintaxis.
¿Alguien me puede ayudar por favor?. Me urge bastante.
1

1 Respuesta

20.175 pts. Programador con experiencia en Access
No entiendo porque pones las fechas 01/01/1900 y 31/12/2100 esto es ILÓGICO, en este ejemplo tengo tabla1 con los campos fecha campo1 campo2 y campo3.
En un formulario tengo dos cajas de texto txt_Del y txt_Al en los cuales se teclean el rango de las fechas que se van a filtrar, hago una consulta de creación de tablas y creo una tabla llamada wReporte la cual es la que vas a definir como origen de datos en tu reporte (informe).
Tengo dos variables de memoria Var y VarWhere y con un IF pregunto si las cajas de texto tienen valor, como son cajas de texto su valor es "" (espacio), si ambas cajas están vacías o sea "" en la variable donde voy a guardar el filtro de la consulta solo pongo el orden en que que se va a grabar la tabla wReporte, pero si tienen valor (obviamente si seleccionas un rango de fechas debes teclear ambas cajas de texto) voy a definir el filtro de las fechas, cuando ya definí si hay fechas tecleadas o no las hay, concateno (uno) la condición de la variable VarWhere con la consulta que esta en la variable Var.
Private Sub BotonReporte_Click()
Dim Var, VarWhere As String
'arma la condicion para ver si imprime todo lo que tenga la tabla ó imprime el filtro del rango de fechas
If Me.txt_Del.Value = "" And Me.txt_Al.Value = "" Then
VarWhere = "ORDER BY tabla1.fecha"
Else
VarWhere = "WHERE tabla1.fecha Between #" & Format(Me.txt_Del.Value, "mm/dd/yyyy") & "#" _
& " And #" & Format(Me.txt_Al.Value, "mm/dd/yyyy") & "#" _
& "ORDER BY tabla1.fecha.fecha"
End If
 'ejecuto la consulta y se crea la tabla wReporte
Var = "SELECT tabla1.fecha, tabla1.campo1, tabla1.campo2, tabla1.campo3 " _
& "INTO wReporte " _
& "FROM tabla1 "
Var = Var & VarWhere ' concateno las variables y en Var queda la consulta
DoCmd.SetWarnings False ' desactivo los mensajes del access
DoCmd. RunSQL vSql ' ejecuto la consulta que esta almacenada en la variable Var
DoCmd.SetWarnings True ' vuelvo a activar los mensajes del access
DoCmd. OpenReport "r_Informe1", acViewPreview ' ejecuto el reporte
End Sub
Espero en primera me entindas y en segunda sea lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas