Recordsouce con filtro |
Responder |
Autor | |
gabores
Habitual Unido: 06/Agosto/2007 Localización: Bolivia Estado: Sin conexión Puntos: 123 |
Tema: Recordsouce con filtro Enviado: 30/Marzo/2021 a las 20:41 |
Hola a todos.
Los molesto para ver si pueden echarme una mano con algo que me esta complicando Tengo un informe que tiene aplicado un filtro en el evento AL ABRIR y funciona perfectamente. Ese informe ahora debo aplicarlo como subinforme dentro de otro y ya el filtro no funciona. He buscado por todos lados y dí con una publicación que comenta que los filtros no funcionan en subinformes por lo que lo correcto seria en el mismo evento aplicar un RECORDSOURCE donde se aplique ese filtro a la condición WHERE pero he dado mil vueltas y no consigo hacer que el código funcione. el recordsource sería Me.RecordSource = "Select * from rpt_cobros_001_sub_3_csl where y el where sería "[caja_fecha] Between #" & Format(Forms!frm_rpt_seleccion!desde, "mm/dd/yyyy") & "#" & " and #" & Format(Forms!frm_rpt_seleccion!hasta, "mm/dd/yyyy") & "#" pero cuando los uno no funciona y no tengo idea de donde le estoy errando. Alguien podría orientarme. Desde ya muchas gracias. |
|
GOOO
Asiduo Unido: 08/Mayo/2012 Localización: Guatemala Estado: Sin conexión Puntos: 351 |
Enviado: 31/Marzo/2021 a las 19:41 |
Generalmente lo que hago es mandar un msgbox con la cadena para verificar exactamente que es lo que esta recibiendo.
Msgbox "Select * from rpt_cobros_001_sub_3_csl where [caja_fecha] Between #" & Format(Forms!frm_rpt_seleccion!desde, "mm/dd/yyyy") & "#" & " and #" & Format(Forms!frm_rpt_seleccion!hasta, "mm/dd/yyyy") & "#" Alli podras verificar exactamente que estás enviadole al informe Si es un subinforme, ya probaste cargar el RecorSource desde el informe principal o padre. Me.SubInforme.RecordSource ....tu codigo Editado por GOOO - 31/Marzo/2021 a las 19:45 |
|
Viendo se aprende y practicando se mejora
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 31/Marzo/2021 a las 20:12 |
Esto he sacado de mis apuntes
RECORDSET ENTRE FECHAS Tiene
que ir entre # y tener formato fecha
Dim rst As DAO.Recordset Set rst =
CurrentDb.OpenRecordset("SELECT tbVentas.NumFactura, tbVentas.FacturaCreada,
tbVentas.Cliente, tbVentas.FacturarRemesa FROM tbVentas WHERE
(((tbVentas.FechaVenta) Between # " & Format(Me.Texto0,
"mm/dd/yyyy") & " # And # " & Format(Me.Texto2,
"mm/dd/yyyy") & " # ))GROUP BY tbVentas.NumFactura,
tbVentas.FacturaCreada, tbVentas.Cliente, tbVentas.FacturarRemesa HAVING
(((tbVentas.NumFactura) Is Null) AND ((tbVentas.Cliente) Is Not Null))") Quizas alguna comilla doble mal puesta? Editado por rokoko - 31/Marzo/2021 a las 20:13 |
|
gabores
Habitual Unido: 06/Agosto/2007 Localización: Bolivia Estado: Sin conexión Puntos: 123 |
Enviado: 05/Abril/2021 a las 21:54 |
Buenas tardes...
Antes que nada gracias por las respuestas pero les cuento que no he tenido éxito. Seguí buscando en la WEB y encontré una opción que a muchos parece funcionarle que es la siguiente: Me.RecordSource = "Select * from rpt_cobros_001_sub_3_csl where " & Me.Parent.Filter donde el recordsource imitaría las condiciones del filtro del reporte padre en el sub reporte pero cuando abro en reporte padre me dice que "No se puede establecer el Origen del registro en el modo de vista preliminar ni despues que haya comenzado la impresion" y en mi caso es muy importante poder ver el reporte en vista preliminar. Existe alguna otra posibilidad? Desde ya muchas gracias por las ideas que puedan aportarme.
|
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 05/Abril/2021 a las 22:39 |
Como te dice el mensaje 'de error' el recordsource del subformulario lo tienes que establecer antes de lanzar la visualización / impresión del informe y una vez hecho ya no puedes tocarlo.
Nada te impide, crearte el recordsource antes de abrirlo. Aunque de todas formas, si le aplicas el mismo filtro que al formulario padre ... ¿no podrías relacionar ambos por el campo al cual le aplicas el filtro? -vincular por ese campo en principal/secundario- Editado por Mihura - 05/Abril/2021 a las 22:40 |
|
gabores
Habitual Unido: 06/Agosto/2007 Localización: Bolivia Estado: Sin conexión Puntos: 123 |
Enviado: 13/Abril/2021 a las 23:22 |
Hola Mihura.
Ante todo gracias por tu respuesta! Te cuento que no era posible (al menos con mis conocimientos básicos de Access) relacionar los informes principal/secundario ya que lo que básicamente necesitaba era un rango de fechas y hasta donde conozco puedo relacionar un campo pero no un rango.. espero no estar diciendo una tonteria pero hasta ahí llega mi conocimiento. Te cuento a ti y a todos los que tal vez no cuenten con mucha experiencia en programación por código como yo; que buscando mucho por la web pude utilizar otro recurso que terminó siendo la solución en mi caso...( no se si la mejor pero pude salir del paso ) Lo que hice fue crear 2 subinformes... (rpt_cobros_001_sub_3 y rpt_cobros_001_sub_4 )cada uno con los datos tal cual los necesitaba en el origen de datos y en el informe principal puse un subform sin origen de datos (rpt_cobros_001_sub_x) una vez hecho esto en el "evento al abrir" según el filtro aplicado al informe cambio el origen del subinforme con el que filtra los datos de la misma forma que el filtro aplicado al informe principal con SOURCEOBJECT. Les dejo aquí como lo solucioné y se que seguramente no será la mejor solución pero me sacó del apuro. --------------------------------------------------------------------------------------------------- Dim periodo As String If Forms!frm_rpt_seleccion!frm_rpt_seleccion_subform.Form.reporte_id = 9 And Forms!frm_rpt_seleccion!sucursal_id = 0 Then periodo = "[caja_fecha] Between #" & Format(Forms!frm_rpt_seleccion!desde, "mm/dd/yyyy") & "#" & " and #" & Format(Forms!frm_rpt_seleccion!hasta, "mm/dd/yyyy") & "#" DoCmd.ApplyFilter , periodo Me.rpt_cobros_001_sub_x.SourceObject = "rpt_cobros_001_sub_3" ElseIf Forms!frm_rpt_seleccion!frm_rpt_seleccion_subform.Form.reporte_id = 9 And Forms!frm_rpt_seleccion!sucursal_id <> 0 Then periodo = "[caja_fecha] Between #" & Format(Forms!frm_rpt_seleccion!desde, "mm/dd/yyyy") & "#" & " and #" & Format(Forms!frm_rpt_seleccion!hasta, "mm/dd/yyyy") & "# And caja_sucursal_id = " & Forms!frm_rpt_seleccion!sucursal_id DoCmd.ApplyFilter , periodo Me.rpt_cobros_001_sub_x.SourceObject = "rpt_cobros_001_sub_4" End If ------------------------------------------------------------------------------------------------- Muchas gracias como siempre a todos por ayudarme. Se puede cerrar el hilo.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |