IMPRIMIR REGISTRO ACTIVO

Discute sobre las herramientas de la base de datos
Responder
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Hola, estoy intentando hacer la impresión de un registro (el visible en el formulario) y este es el código que he visto en varios hilos

Option Explicit

Sub ImprimirInforme( Evento )
Dim oReporte As Object
Dim oConsulta As Object
Dim oCampoID As Object
Dim oForm As Object

'El formulario activo
oForm = Evento.Source.Model.Parent
'El campo con el Id
oCampoID = oForm.GetByName("Campoformateado")
'Debe ser mayor a cero
If oCampoID.BoundField.Int > 0 Then
'La consulta en la que se basa el reporte
oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("Consulta1")
'Modificamos la consulta de modo que tome le registro actual
oConsulta.Command = "SELECT ""ID"" FROM ""nombredetabla"" WHERE ""ID"" = " & oCampoID.BoundField.Int
'El informe a mostrar
oReporte = ThisDatabaseDocument.ReportDocuments.getByName ("nombredeinforme")
'Mostramos el reporte
oReporte.Open
End If

tengo construida una consulta (consulta1) para que responda correctamente pero sale siempre este error

"Error de ejecución de BASIC.
Se ha producido una excepción
Type: com.sun.star.container.NoSuchElementException
Message: ."

en la linea
oCampoID = oForm.GetByName("Campoformateado")

Tengo un campo automatico ID en la tabla llamada y la consulta es del tipo
SELECT "ID" FROM "nombredetabla" WHERE "ID" = 19

He visto todos los hilos de las conversaciones y aplicaciones desarrolladas del foro. Algunas las he descargado y funcionan perfectamente y casi todas utilizan este código
Me podéis ayudar?
Gracias
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

El error se produce por que no encuentra el control, revisa que el nombre del campo corresponde al nombre del control.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Gracias RMG por interesarte por mi problema. Desgraciadamente no se a que te refieres con " el control". A qué campo te refieres? ¿cuál es el control?
Gracias!!
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

Según indicas en el código que muestras (oCampoID = oForm.GetByName("Campoformateado")), tienes un control llamado "Campoformateado", de donde obtienes el valor del ID. Entra en sus propiedades y comprueba que se llama así y no txtCampoformateado o algo distinto a lo que indicas en el código.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Gracias nuevamente. Efectivamente, tengo en el formulario desde donde quiero hacer la impresión, un campo formateado que muestra los valores del ID y he comprobado que el nombre del mismo es "Campoformateado". He revisado todos los ejemplos que me descargué y tienen la misma configuración. Espero que se te ocurra algo porque estoy totalmente atascado
Muchas gracias!!
Libre Office 6.4 en Windows 10
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Hola nuevamente. A grandes males grandes remedios. He creado un nuevo formulario y con un nuevo botón y exactamente el mismo código y campos resulta que ahora pasa la línea de código donde se atascaba pero se para en la siguiente
If oCampoID.BoundField.Int > 0 Then
con el siguiente mensaje
Error de ejecucion de BASIC.
No se encontró la propiedad o el método : BoundField.
Si me puedes ayudar te lo agradecería.
Un saludo y muchas gracias!!
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

Lo mejor es que adjuntes un pequeño ejemplo con lo que tienes hecho, así evitamos dar palos de ciego. Recuerda que lo que adjuntes debe ser comprimido o un enlace a un servidor externo.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Tengo un problema previo a poderte mandar el ejemplo. Resulta que cuando creé el comprimido me daba problemas al enviar y resulta que es que el tamaño era de 127MB!!. Evidentemente había borrado las bases de datos que tenían datos y dejado solo una con 4 registros de ejemplos y seguía diciendo 127 MB. Incluso después de borrar TODAS las bases de datos sigue diciendo esa barbaridad de MB. ( la original si que los tenía porque incluía pdf de escaneos). ¿se te ocurre cual es el problema?
Gracias!!
Libre Office 6.4 en Windows 10
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por Neftali R »

Podrías hacer una copia del archivo y cambiar la extención de ".odb" a ".zip" y examinar el documento para ver que tiene que pesa tanto.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

Debes hacer una limpieza de la BD, esto se hace haciendo un CHECKPOINT DEFRAG. En el menú->herramientas->SQL comando a ejecutar, pones lo que te indico y despues ejecutar.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Gracias. En principio analizando los archivos de BASE veo que es el Firibird.fbk que tiene 130 MB.
Respecto al CHECKPOINT DEFRAG lo he hecho y da el siguiente mensaje:

*Token unknown - line 1, column 1
*CHECKPOINT
caused by
'isc_dsql_prepare'

y sigue teniendo el mismo tamaño.
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

Si tu BD esta diseñada en LO 6.2 o superior no puedes utilizar el comando CHEKPOINT DEGRAG, ya que el motor de BD es el Firebird, este comando es para BD diseñadas en HSQL.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Gracias nuevamente, efectivamente, es LO 6.4. Hay en ese caso alguna solución para este problema?
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Puedes poner la BD sin informacion personal en un servidor tipo Google Drive o Dropbox etc, pones aquí el enlace, y una vez solucionado lo borras.

Verifica antes de esto por si acaso, que el control de donde obtienes el ID es número y no texto.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Hola nuevamente. Perdona la demora pero es que no he podido arreglar el tema de la base de datos del desarrollo actual y lo que he hecho es enviarte un nuevo ejemplo con BD Firebird y que no consigo que imprima solo el registro activo ya que imprime todos los registros. Si me dices la solución a lo mejor puedo implementarlo en el original
Muchas gracias por tu ayuda.
Un saludo.
Libre Office 6.4 en Windows 10
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

creo que no había ajuntado en zip
Adjuntos
PROGRAMA NUEVO.zip
(14.25 KiB) Descargado 199 veces
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

La macro funciona correctamente, el error lo tienes de donde obtienes los datos en el informe. En las propiedades del informe, en la pestaña Datos debes cambiar el origen de da datos de la tabla Autores a consulta ConsultaSelectiva.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Muchas gracias nuevamente por tu ayuda. Efectivamente he seguido tu consejo y funciona perfectamente. Ahora solo queda que aplicado en el desarrollo que me interesa funcione también. Lo intento y te comento.
Un saludo!!
Libre Office 6.4 en Windows 10
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Hola de nuevo. Resulta que al ver mas detenidamente el funcionamiento del informe que genera el ejemplo que te mandé, efectivamente selecciona para impresión el registro activo ( hasta ahí es un avance) pero el informe no contiene todos los campos (id, nombre, domicilio e imagen) sino solo los dos primeros. He modificado la consulta para añadir esos dos campos y no consigo que aparezca en en desplegable de las propiedades del informe. Si aparece id y nombre pero, como digo, las otras dos no aparecen y no lo saca en el informe. Adjunto el ejemplo a ver si puedes decirme que pasa.
Gracias por tu paciencia.
Un saludo.
Adjuntos
Impresión Selectiva.zip
(34.23 KiB) Descargado 196 veces
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

Debes añadir los campos que necesites en la macro, en la linea SELECT donde haces la selección SQL.

Saludos
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)
James07
Mensajes: 78
Registrado: Sab Jul 04, 2020 12:15 pm

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por James07 »

Hola de nuevo. Efectivamente poniendo los campos adicionales en la macro salen los de texto excepto el campo imagen. Creo haberlo hecho correctamente pero no se visualiza la imagen de la base de datos. Te adjunto el ejemplo modificado. Gracias por tu paciencia!
Adjuntos
Impresión Selectiva.zip
(34.3 KiB) Descargado 191 veces
Libre Office 6.4 en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: IMPRIMIR REGISTRO ACTIVO

Mensaje por RMG »

Hola,

Hasta donde yo se en los informes diseñados en ORB, el control imagen no sale, para que salga la imagen debes crear una ruta hacia donde tengas almacenadas las imágenes. Por eso, lo mejor es trabajar con las imágenes almacenadas en una carpeta, y no tener un campo BLOB o imagen, que lo único que hacer es agrandar la BD.

Mira mi propuesta de tu BD sin el campo Imagen. Para obtener la imagen de cada persona, se usa el campo ID de ella como nombre de imagen y esta almacenada en la carpeta Imágenes que te adjunto en el .zip. Siempre debe estar la carpeta donde almacenes las imágenes en el mismo sitio que la BD.

Saludos
Adjuntos
Prueba.7z
(72.29 KiB) Descargado 209 veces
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)
Responder