IMPRIMIR REGISTRO ACTIVO
IMPRIMIR REGISTRO ACTIVO
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
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
Re: IMPRIMIR REGISTRO ACTIVO
Hola,
El error se produce por que no encuentra el control, revisa que el nombre del campo corresponde al nombre del control.
Saludos
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)
Re: IMPRIMIR REGISTRO ACTIVO
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!!
Gracias!!
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
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
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)
Re: IMPRIMIR REGISTRO ACTIVO
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!!
Muchas gracias!!
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
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!!
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
Re: IMPRIMIR REGISTRO ACTIVO
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
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)
Re: IMPRIMIR REGISTRO ACTIVO
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!!
Gracias!!
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
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
Re: IMPRIMIR REGISTRO ACTIVO
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
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)
Re: IMPRIMIR REGISTRO ACTIVO
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.
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
Re: IMPRIMIR REGISTRO ACTIVO
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
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)
Re: IMPRIMIR REGISTRO ACTIVO
Gracias nuevamente, efectivamente, es LO 6.4. Hay en ese caso alguna solución para este problema?
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
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
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)
Re: IMPRIMIR REGISTRO ACTIVO
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.
Muchas gracias por tu ayuda.
Un saludo.
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
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
Re: IMPRIMIR REGISTRO ACTIVO
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
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)
Re: IMPRIMIR REGISTRO ACTIVO
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!!
Un saludo!!
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
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.
Gracias por tu paciencia.
Un saludo.
- Adjuntos
-
- Impresión Selectiva.zip
- (34.23 KiB) Descargado 196 veces
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
Hola,
Debes añadir los campos que necesites en la macro, en la linea SELECT donde haces la selección SQL.
Saludos
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)
Re: IMPRIMIR REGISTRO ACTIVO
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 192 veces
Libre Office 6.4 en Windows 10
Re: IMPRIMIR REGISTRO ACTIVO
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
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)