GENERAR INFORME DE UNA SELECCION

Discute sobre las herramientas de la base de datos

GENERAR INFORME DE UNA SELECCION

Notapor James07 » Vie Feb 05, 2021 6:56 pm

Hola. sigo con mas problemas.
En un formulario, con la función de buscar de libreoffice (la lupa) me selecciona un registro concreto que cumple los términos de la búsqueda. Yo solo quiero un informe con ese solo registro seleccionado pero cuando le doy a la función
Sub ImprimirDocumento( Evento )
Dim oReporte As Object
Dim oForm As Object

'El formulario activo
oForm = Evento.Source.Model.Parent
oReporte = ThisDatabaseDocument.ReportDocuments.getByName ("DocumentoFinal" )
'Mostramos el reporte
oReporte.Open
End Sub
me hace un informe con TODOS los registros de la tabla. He intentado hacer un filtro y solo dejo un solo registro (el que cumple las condiciones) y aún así me imprime todos los registros de la tabla en el informe.
¿me podéis ayudar?
Gracias!
OpeOffice 6.4 en Windows 10
James07
 
Mensajes: 13
Registrado: Sab Jul 04, 2020 12:15 pm

Re: GENERAR INFORME DE UNA SELECCION

Notapor Longi » Vie Feb 05, 2021 9:55 pm

Buenas!
Hay muchos ejemplos en el foro
Puedes usar el evento del botón para recoger la clave principal del formulario.
Con ello haces un command de la consulta origen de los datos. En ese momento sólo tendrás los datos del registro del formulario con los que se genera el informe que quieres

Un saludo! ;)
Echa un vistazo a esto :
https://forum.openoffice.org/es/forum/viewtopic.php?f=31&t=13197&hilit=Formulario
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Longi
 
Mensajes: 726
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: GENERAR INFORME DE UNA SELECCION

Notapor James07 » Sab Feb 06, 2021 1:57 pm

Gracias Longi por tu rápida respuesta pero he estado echando un vistazo al ejemplo y creo que no puedo ajustarlo a mi aplicación o al menos no tengo conocimientos para ello. Mi necesidad es mas simple. Dada una selección por la propia utilidad de Base ( la lupa) que me devuelve un resultado en mi formulario, generar un informe solo con esa selección.
Muchas gracias.
OpeOffice 6.4 en Windows 10
James07
 
Mensajes: 13
Registrado: Sab Jul 04, 2020 12:15 pm

Re: GENERAR INFORME DE UNA SELECCION

Notapor RMG » Sab Feb 06, 2021 7:14 pm

Hola,

Esta macro imprime el formulario activo con los datos que se visualizan. No es un informe, es el formulario de trabajo.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub BotonImprimeFormulario(Evento As Object)
   Dim oForm As Object
   Dim oFrame As Object
   Dim oDisp As Object
   oForm = Evento.Source.Model.Parent
   oFrame = oForm.Parent.Parent.CurrentController.Frame
   oDisp = CreateUnoService("com.sun.star.frame.DispatchHelper")
   oDisp.ExecuteDispatch(oFrame,".uno:Print","",0,Array())
End Sub


Saludos
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3811
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: GENERAR INFORME DE UNA SELECCION

Notapor James07 » Dom Feb 07, 2021 2:00 pm

Muchas gracias por tu respuesta RMG pero lo he aplicado y lo que hace es imprimir efectivamente el formulario que hay visible tal y como me adelantabas. Yo lo que quería es que me imprimiera un informe del registro activo ( el que estoy viendo ) y no toda la base de datos que era lo que la siguiente macro me hace en la actualidad
Sub ImprimirDocumento( Evento )
Dim oReporte As Object
Dim oForm As Object

'El formulario activo
oForm = Evento.Source.Model.Parent
oReporte = ThisDatabaseDocument.ReportDocuments.getByName ("informe" )
'Mostramos el reporte
oReporte.Open
End Sub.

Muchas gracias nuevamente.
OpeOffice 6.4 en Windows 10
James07
 
Mensajes: 13
Registrado: Sab Jul 04, 2020 12:15 pm

Re: GENERAR INFORME DE UNA SELECCION

Notapor RMG » Lun Feb 08, 2021 4:32 pm

Hola,

Me parece que donde te indica longi tienes la respuesta. De todas formas mira si esto te ayuda, aunque siempre decimos que para ayudaros con más acierto, lo mejor es adjuntar un ejemplo de como lo tenemos montado, cada uno trabaja de distinta forma.

En primer lugar tu informe tiene que tener como origen de datos una consulta y no una tabla, ya que esta es la que se modifica según la selección del formulario. Por supuesto debes tener un campo único para cada registro, en este caso un ID.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub FiltroID ( Evento )
   Dim oConsulta As Object
   Dim oCampoID
   Dim oForm As Object
   'El formulario activo
   oForm = Evento.Source.Model.Parent
   'El campo con el ID, pon el nombre que tengas
   oCampoID = oForm.getByName("ID").Text
   'Debe contener datos
   If oCampoID = "" Then Exit Sub
   'La consulta a filtrar
   oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("NombreConultaDelInforme")   
   'Modificamos la consulta   
   oConsulta.Command = "SELECT * FROM TablaDatosInforme WHERE ID = " & oCampoID & ""
    ThisDatabaseDocument.ReportDocuments.GetByName("NombreInforme").Open
End Sub


Saludos
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3811
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España


Volver a Base

¿Quién está conectado?

Usuarios navegando por este Foro: jjcastillo.7 y 3 invitados