Generar informe desde una tabla filtrada

Soy nuevo en Access.

Estoy armando un programa en Access 2013 donde tengo dos formularios, Clientes y Productos.

En el formulario Clientes selecciono un cliente de un listado y por medio de un botón abro el formulario Productos donde muestra en una tabla los productos con todas sus características del cliente seleccionado anteriormente.

Necesito generar un informe sobre los productos filtrados por categoría, fecha o algún otro filtro que pueda utilizar, en conclusión necesitaría que sea cual sea el filtro que aplique se genere el informe con los datos que están visibles en la tabla.

1 respuesta

Respuesta

Basta con que le indiques al informe que su origen de datos es una 'copia' de los registros que tienes en ese momento en el formulario Productos. Es decir, si usas el formulario Clientes ysolicitas filtrar por los campos que quieras los registros a mostrar en el formulario Productos, desde éste formulario solcitas el informe en cuestión. En el evento Load del informe añades algo similar a lo siguiente:

Option Compare Database 
Option Explicit 
Private Sub Report_Load() 
On Error GoTo Err_Report_Load 
    Me.RecordSource = Forms![Formulario1].RecordSource 
Exit_Report_Load: 
    Exit Sub 
Err_Report_Load: 
    MsgBox Err.Description 
    Resume Exit_Report_Load 
End Sub

Con ello le estás indicando que su origen de datos es copia de lo que tienes actualmente en Productos. En las propiedades del informe configura luego como quieres agrupar y ordenar los registros...

Cordiales saludos.

Hola Angel.

Primero quiero darte las gracias por contestar a mi pregunta.

No comprendo como debo hacer para indicarle al informe que sera una copia de la tabla productos.

Me podrías dar un ejemplo de como debería ser para poder probar?

Esto es lo que tengo hasta ahora..

En mi Formulario Productos Utilizo un Subformulario que tiene como objeto de origen la Tabla de Productos, vinculadas al campo principal ID_Cliente (Tabla Clientes) y como secundario el ID_Cliente (Tabla Productos).

Luego de allí, genere un informe seleccionando las tablas Clientes y Productos y le aplique como criterio que me filtrara los datos utilizando el ID_Cliente que tengo vinculada a la tabla Productos.

Saludos Cordiales

Según creo entender desde el formulario Clientes abres el formulario Productos. Este formulario contiene un subformulario, por ejemplo ProductosSub con la relación que indicas. Puedes añadir filtros en el formulario Productos que filtren los registros que presenta ProductosSub. Basta con que ProductosSub lo bases en una consulta sobre la tabla Productos en vez de sobre la tabla directamente, y le añadas los criterios que hagan referencia a los campos de filtro que incluyas en el formulario Productos. Si tienes abierto en modo de diseño el formulario Productos mientras estas en diseño de la consulta puedes usar el generador para escribir el criterio de un modo más cómodo. Por ejemplo, si incluyo un filtro TipoProducto en el formulario Productos para ver solo un determinado tipo de productos del cliente seleccionado en lugar de todos sus productos, en la consulta origen de los registros del subformulario ProductosSub usare como criterio de filtro sobre el campo TipoProducto una clausula como la siguiente:

Como Forms![Productos]![TipoProducto]

Una vez tengas posibilidad de mostrar en el subformulario ProductosSub los productos que desees, añades un botón al formulario Productos que abra el informe que va a presentar los datos mostrados en ProductosSub. Incialmente puedes basar el informe en la tabla Productos para poder diseñarlo más cómodamente, pero le añades el código que te indicaba en mi anterior respuesta. En el le estás diciendo al informe durante su apertura que quieres que su origen de datos pase a ser del que tenga indicado inicialmente a uno nuevo, que es el que tenga el subformulario ProductosSub en ese momento. Esto se lo indicamos con la linea siguiente:

Me.RecordSource = Forms!ProductosSub.RecordSource

En lugar de ProductosSub pon el nombre de tu subformulario.

Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas