base de datos

You are currently browsing articles tagged base de datos.

En un post anterior se explicaba como acceder a una base de datos desde OpenOffice, generar documentos con los datos obtenidos de la base de datos y cómo un documento obtenido así presentaba una numeración de página con saltos. Los saltos se deben a que el documento se entiende como un conjunto de documentos independientes puestos juntos, sin embargo, a veces esto no nos interesa y necesitamos resetear el contador de páginas para obtener una paginación normal. Para eso usaremos una macro en Basic.

Reseteo del número de página

Para restear ese cambio de numeración de página habría que ponerse en el principio del primer párrafo tras el salto de página que queremos cambiar. Nos metemos en «Formato»->»Párrafo…» y, en la pestaña «Flujo de texto» vemos que en el apartado salto hay marcado un salto de página y el recuadro de «Con estilo de página», un estilo de página (normalmente «Predeterminado») y «número de página» con un valor de 1. Si ponemos 0 en este valor ya no se produce el salto en la numeración de página.

Pero claro, esto esta muy bien si son pocos los documentos combinados. ¿Qué hacer si son muchos?

Macro para resetear el número de página

Tras mucho buscar encontré un macro para hacer esto en este hilo del foro de usuarios de OpenOffice. El macro ya adaptado para que funcione directamente es el siguiente:

Sub Main
Dim document As Object
document = ThisComponent
Dim oTextEnum As Object
Dim oTextElement As Object
Dim oTextPortionEnum As Object
Dim oTextPortion As Object
 
oTextEnum = document.Text.createEnumeration
 
While oTextEnum.hasMoreElements() REM iterate through paragraphs and tables
     oTextElement = oTextEnum.nextElement()
   If oTextElement.supportsService("com.sun.star.text.Paragraph") Then
      oTextPortionEnum = oTextElement.createEnumeration()
      While oTextPortionEnum.hasMoreElements()
         oTextPortion = oTextPortionEnum.nextElement()
         If oTextPortion.PageNumberOffset = 1 Then
            oTextPortion.PageNumberOffset = 0
         End If
      Wend
 
   End If
Wend
 
End Sub

Espero que a alguien le pueda servir y que no tenga que buscar tanto como yo una solución para algo que debería ser sencillo.

Tags: , , ,

Una de los detalles más útiles de las últimas versiones de OpenOffice es que dispone de un gestor de base de datos. Este gestor se puede usar como interfaz sencilla entre un motor de bases de datos como PostgreSQL o MySQL y los otros programas de la suite. Al conectar y registrar una base de datos se puede acceder a las distintas tablas, vistas y consultas desde, por ejemplo, el writer. Esto nos permite insertar campos de las tablas en nuestros documentos e incluso crear distintos documentos con «datos personalizados».

Conectar con una base de datos

Para conectar con una base de datos existente hay que un documento de «Base de datos» nuevo. Al principio se abrirá un asistente en el que elegiremos «conectar con una base de datos existente». Aquí tenemos muchas interfaces para fuentes de datos a las que conectarnos: JDBC, Oracle JDBC, dBase, Texto (¡permite acceder incluso a datos en formato csv!), Hoja de cálculo, ODBC. En el caso de trabajar con un Mac incluso nos podemos conectar a la libreta de direcciones. Si lo tenemos instalado también aparecerá una interfaz nativa para conectarnos a bases de datos MySQL.

Con la interfaz nativa yo me he encontrado con el problema de no poder aislar la base de datos concreta que quiero usar de las demás a las que tengo acceso. Normalmente teniendo Java instalado una buena opción es instalar el controlador JDBC para MySQL o para el tipo de base de datos que vayamos a utilizar (por ejemplo PostgreSQL). Otra opción que también funciona, sobre todo si trabajamos con Windows, es instalar  y usar el controlador ODBC apropiado. Esta redundancia en los interfaces de conexión puede ser muy útil en el caso de que alguno de las interfaces no nos funcione.

En el caso de una base de datos MySQL podemos elegir la opción MySQL y después «conectar usando JDBC» (Si usamos directamente la opción JDBC la clase será: «com.mysql.jdbc.Driver»). Introducimos los parámetros para la conexión y el nombre de la base de datos y pulsamos «siguiente>>». En la siguiente pantalla introducimos el nombre de usuario y la contraseña y probamos que la conexión funciona con el botón «Conexión de prueba». La última pantalla tiene una de las opciones más interesantes que es la de registrar la base de datos en OpenOffice.org, esto nos permite después acceder a ella desde las otras aplicaciones (al contrario de lo que el nombre sugiere el registro no tiene nada que ver con mandar datos a OpenOffice.org).

Ya tenemos la base da datos registrada y, dependiendo de nuestros permisos, podemos manipularla o leerla desde el programa de gestión. Una limitación es que nos limitamos en cuanto a funcionalidad al mínimo común denominador entre todas las bases de datos, algo que es casi ineludible en un programa de uso general como este. Una de las cosas más interesante es que además podemos usar la base de datos desde otras aplicaciones si la hemos registrado.

Bases de datos desde writer

En writer podemos usar los valores almacenados en la base de datos. Podemos crear informes detallados con nuestro propio formato en el que sustituyamos algunas zonas por los datos de una tabla. Por ejemplo, si tuviéramos una tabla con datos de las facturas podríamos generar todas las facturas que queramos como documentos.

Los campos se introducen en «Insertar»->»Campos»->»Otros…» en la pestaña «Bases de datos» con la opción «Campos de combinación de correspondencia». También se pueden insertar usando el botón «Fuentes de Datos» de la barra de herramientas y arrastrando el nombre de la columna de una tabla a su posición en el documento.

Si queremos obtener simplemente una combinación de fichas con los datos de una tabla habría que hacer lo siguiente:

Creamos nuestra plantilla e insertamos los campos a sustituir con uno de los dos métodos explicados anteriormente. Abrimos «Herramientas»->»Asistente para combinar correspondencia». Aquí pasamos directamente al apartado 7 «Personalizar documento» pues se supone que ya tenemos todos los pasos anteriores hechos (incluida la inserción de los campos a sustituir). Después en el apartado 8 elegimos «Guardar documento combinado» y debajo «Guardar como documento único» y pulsamos «Guardar documentos».

En mi versión de OpenOffice aparte de guardarse el documento con el nombre elegido también se crea un documento idéntico sin nombre que se mantiene abierto para editar y, el archivo abierto de la propia plantilla también cambia de nombre a veces (¿error o característica?). En este caso yo cierro y vuelvo a abrir el documento guardado para evitar confusiones.

El problema que aparece aquí es que el documento combinado presenta unos saltos de página especiales en los que se resetea el contador de páginas. Esto es muy útil cuando en realidad se trata de documentos separados dentro de un documento maestro contenedor, por ejemplo, un montón de cartas individuales dentro de un documento o diferentes facturas. Pero es un problema a la hora de hacer, por ejemplo, un documento general con fichas de datos, en el que se quiera mantener una numeración normal. En una próxima entrada veremos como solucionar esto.

Tags: ,