** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Lanzar report filtrando con una variable
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoLanzar report filtrando con una variable

 Responder Responder
Autor
Mensaje
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Tema: Lanzar report filtrando con una variable
    Enviado: 06/Agosto/2020 a las 10:11
Buenos días a todos
Como soy bastante novato, no me termino de aclarar con cosas que os parecerán muy sencillas, pero que para mí son complicadas:
Quiero lanzar un report, filtrándo la tabla por un campo, según una variable que creo previamente, pero al lanzarlo, no sale ningún registro. Algo he tenido que hacer mal al poner el filtro al report.
Aquí os pego el código. Muchas gracias anticipadas por vuestro tiempo y paciencia.

Private Sub Comando10_Click()
    Dim DBF As DAO.Database
    Dim recset As DAO.Recordset

    Set DBF = CurrentDb
    Set recset = DBF.OpenRecordset("Dietas")

    Dim ejercicio As String
'Pregunta el ejercicio
    Dim Mensaje, Titulo, Default
    Mensaje = "Introduzca el ejercicio económico"
    Titulo = "Seleccionar Ejercicio: En blanco (Supr) = Todos los ejercicios"
    Default = Str(Year(Date))
'lanza el inputbox
    ejercicio = InputBox(Mensaje, Titulo, Default, 11000, 7000)
    
    DoCmd.OpenReport "Listado_Dietas_X_expedte", acViewPreview, "trim(recset![diet_ejercicio]) = trim(ejercicio)", acNormal

End Sub

Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 06/Agosto/2020 a las 10:54
Hola,

Pues si, lo complicas muchísimo.

1. No necesitas el recordset. El Report es quien "pone" el origen del registro
2. No declaras correctamente las variables de mensaje. Además de que te las puedes ahorrar
3. No construyes correctamente la condición. Debe incluir entre comillas el nombre del campo sobre el que filtrarás y el signo igual. Fuera de las comillas, concatenado por &, se indica el control/campo/variable que contiene el valor por el que se filtrará. En función del dato (dices que es un texto) se debe delimitar con ' o " (los textos), # (las fechas. y en formato americano) o sin nada (los números enteros.


Así pues:

Dim ejercicio As String
ejercicio = InputBox("Introduzca el ejercicio económico", "Seleccionar Ejercicio; En blanco (supr) = todos los ejercicios", Year(Date))
DoCmd.OpenReport "Listado_Dietas_X_expedte", acViewPreview, "[diet_ejercicio] = '" & ejercicio & "'", acNormal

Escrito al vuelo

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 06/Agosto/2020 a las 21:12
Muchísimas gracias. Sí que parece que me complico la vida de más, con lo sencillo que era...

De todas formas, no se lo que ocurre, que sigue sin mostrar ningún registro en el report, y con el valor que le doy en el input, tendrían que salir varios...

Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 07/Agosto/2020 a las 05:40
He modificado un par de cosas, pero sigue dando un error:

* el valor por defecto del inputbox lo he cambiado a Str(Year(Date()))
* Al lanzar el report faltaba una coma después de acviewpreview

Pero ahora me pide el valor del parámetro [diet_ejercicio] (que es como se llama el campo tipo texto de la tabla donde filtro con la variable ejercicio). Imagino que es un error de sintaxis, pero no se cómo arreglarlo. Ha quedado así:

Dim ejercicio As String
ejercicio = InputBox("Introduzca el ejercicio económico", "Seleccionar Ejercicio; En blanco (supr) = todos los ejercicios", Str(Year(Date)))
DoCmd.OpenReport "Listado_Dietas_X_expedte", acViewPreview, , "[diet_ejercicio] = '" & ejercicio & "'", acNormal

Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 07/Agosto/2020 a las 10:35
Verifica que diet_ejercicio sea un campo incluido en el origen del registro del report Listado_Dietas_X_expedte

Xavi, un minyó de Terrassa

Mi web
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 07/Agosto/2020 a las 10:44
El report está basado en una consulta (Cons_Dietas_X_expedte) sobre una tabla (Dietas). Y uno de los campos de esa consulta es diet_ejercicio
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 07/Agosto/2020 a las 10:50
Este es el código SQL de la consulta:

SELECT Dietas.diet_Id AS Id, Dietas.diet_Dieta AS [D/F], Dietas.diet_viajenum AS [Núm viaje], Dietas.diet_expediente AS Expediente, Dietas.diet_conceptoCS AS [Concepto de la CS], Dietas.diet_tipodegasto AS [Tipo de gasto], Dietas.diet_importe_total AS [Importe dieta], Dietas.diet_acreedor AS Acreedor, Dietas.diet_ejercicio AS Ejercicio, Dietas.diet_organismo AS [Clasif Orgánica], Dietas.diet_programa AS Programa, Dietas.diet_subconcepto AS Subconcepto, Dietas.diet_fechordenCS AS [Fecha Orden CS], Dietas.diet_periodos AS [Períodos CS], Dietas.diet_fechasdelviaje AS [Fechas del viaje], Dietas.diet_destinoCS AS [Destino CS], Dietas.diet_mediotrans AS [Medio de Transporte]
FROM Dietas
WHERE (((Dietas.diet_Dieta)=True))
ORDER BY Dietas.diet_ejercicio, Dietas.diet_Dieta, Dietas.diet_expediente;

Igual el error lo da porque le pongo alias a los campos...?
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 07/Agosto/2020 a las 10:55
Creo que la clave es "AS Ejercicio"

DoCmd.OpenReport "Listado_Dietas_X_expedte", acViewPreview, , "[Ejercicio] = '" & ejercicio & "'", acNormal
Xavi, un minyó de Terrassa

Mi web
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 07/Agosto/2020 a las 10:59
En efecto. Ahora sí que funciona a la perfección.

Muchísimas gracias Xavi. Te debo muchas horas de calentamiento de cabeza que me has ahorrado.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 07/Agosto/2020 a las 11:05
Thumbs Up
Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable