Combinar correspondencia en LibreOffice es sumamente sencillo. El problema me surgía cuando debo copiar más de un registro en una hoja…
Es común que el Gobierno de turno, a través de la organización que beneficia a los estudiantes con alimento o alguna beca, envíe información a los estudiantes que, a principio de año, quieren o no continuar con el beneficio; tal vez sería más fácil seguir otorgándolo y solo dejar de hacerlo cuando cada uno de ellos lo solicitara, pero supongo que, como estrategia para disminuir los beneficios, se espera que l@s estudiantes/apoderados respondan a un llamado. Si no lo hacen en los plazos determinados, el Gobierno corta la ayuda y otorga una cantidad de menor a los establecimientos. En resumen, este proceso es crítico. ¿Qué pasa si, además de comunicar a los padres/apoderados, se debe «generar» un campo extra, por ejemplo, el curso en que actualmente se encuentra el estudiante? De no hacerlo correctamente, también se pierde «la respuesta» y otra ración menos para el establecimiento educacional.
Lo anterior es otra muestra de la descoordinación de los organismos de Estado, que supongo, no solo pasa en mi país; si existiera tal comunicación, aquella pregunta llegaría lista para entregar directamente a los establecimientos. ¿Por qué no habilitar un formulario por Internet? Sencillamente porque la pregunta es a los apoderados, no a los estudiantes y éstos no necesariamente poseen un acercamiento a las tecnologías.
Con todos estos antecedentes, tenemos el siguiente escenario: se necesitan generar varias comunicaciones por hoja, en donde aparezcan el nombre y el curso de cada estudiante. Se tiene la lista de beneficiados con su RUT correspondiente (identificación personal, DNI en otros países).
¿Cómo se solucionó?
- Se creó una base de datos en LibreOffice Base con:
- Una tabla con los datos de los estudiantes beneficiados
- Una tabla con los datos de todos los estudiantes del establecimiento
- Se creó una tabla con los datos requeridos, a partir de una consulta (Select) devolviendo, nombre y curso para cada identificador presente en la tabla A, presente en la tabla B
- Se creó una nueva tabla, esta vez con más datos por registro, esto es: Registro1{Nombre1,Curso1,Nombre2,Curso2,Nombre3,Curso3} Considerando que se necesitarían tres nombres por cada hoja.
- Se generó un documento con tres comunicaciones por hoja en LibreOffice Writer, agregando los campos desde la tabla de la base de datos generada en el paso 3 (Insertar-> Campos->Otros y luego seleccionar el campo de la tabla correspondiente)
- Se presionó imprimir.. y luego se le indicó a LibreOffice Writer que se quería crear un documento nuevo (también existe la opción de imprimir directamente, pero bueno, eran 431 hojas!).
- Como paso extra, se exportó el documento creado en el paso 5 a un formato pdf (considerando que varias personas lo imprimirían, no necesitan modificarlo, para trabajar en paralelo y usar recursos de manera más eficiente).
Claro, se puede usar LibreOffice Calc en vez de LibreOffice Base, para esto la función BUSCARV es la que reemplazaría a la Select del paso 2; Un paso previo obviamente sería preparar los datos. Resulta que la tabla A tiene identificadores en formato de texto y la tabla B en formato numérico, para pasar de texto a número se usó la función VALOR en LibreOffice Calc.
Para la inserción de los campos desde LibreOffice Base hacia el documento «madre» en LibreOffice Writer se usó esta guía
Todo marcha bien cuando tienes que imprimir un registro por hoja, pero cuando son varios nombres en la misma hoja (con el objetivo de optimizar recursos), el tema se complica un poco. La solución simple que usé fue crear registros con la cantidad de pares nombre/curso que se necesitaran, en este caso 3 por registro, como se dice en el paso 3, en cada registro posees tres nombres con sus cursos correspondientes.
Aparte de la claridad del método, me sorprendió el resultado.. un pdf de 431 hojas en tan solo 1.1 MB Cuando quise aplicar el paso 5, en un sistema operativo privativo, el programa generó un error. En cambio, al hacerlo sobre sistemas operativos libres, Fedora, Ubuntu y Debian, el proceso tomó menos de un 1 minuto… se le puede aliviar la pega a los sistemas operativos privativos indicando en el paso 5 que se desea generar un documento, digamos, desde el registro 1 al 50 y luego otro del 51 al 100, etc. Supongo que también la potencia del procesador y la cantidad de memoria RAM puedan tener relación.
Un final feliz para una tarea que llevaba semanas e involucraba a varias personas (aumentando el riesgo de errores).