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!
GENERAR INFORME DE UNA SELECCION
GENERAR INFORME DE UNA SELECCION
Libre Office 6.4 en Windows 10
Re: GENERAR INFORME DE UNA SELECCION
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/v ... Formulario
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/v ... Formulario
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: GENERAR INFORME DE UNA SELECCION
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.
Muchas gracias.
Libre Office 6.4 en Windows 10
Re: GENERAR INFORME DE UNA SELECCION
Hola,
Esta macro imprime el formulario activo con los datos que se visualizan. No es un informe, es el formulario de trabajo.
Saludos
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
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
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: GENERAR INFORME DE UNA SELECCION
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.
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.
Libre Office 6.4 en Windows 10
Re: GENERAR INFORME DE UNA SELECCION
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.
Saludos
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
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
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)