base de datos·docencia·libreoffice·libreoffice Base·manual·Ofimática·Problemas del día a día·sofware libre

¡Diplomas con LibreOffice Base!

Esta entrada complementa a otra que alguna vez publiqué. El problema es bien conocido, necesitamos imprimir una serie de diplomas (sean los puros nombres y cursos o toda la estructura). Los nombres generalmente los tenemos en alguna base de datos u hojas de cálculo, pero no queremos copiar y pegar, ni tampoco ir escribiendo uno a uno.

La receta entonces podría ir así:

  1. Tener los campos en una base de datos LibreOffice Base, en una tabla digamos que se llama “Mitabla”
  2. Creamos un formulario, activando la vista de impresión, configurando el tamaño de la hoja con respecto a los diplomas
  3. Vinculamos el formulario para que reciba los campos desde “Mitabla”
  4. Insertamos los campos que necesitamos, según las medidas que tomemos

¡Y listo!  Ya tenemos un formulario con todos los diplomas que necesitemos imprimir.

Primer caso especial: Quiero algunos estudiantes, no tod@s!

En este caso crearemos una “consulta”. Digamos por ejemplo que necesitamos los diplomas para 8vos y 4toMedio.

  1. En LibreOffice Base vamos al módulo “Consultas”
  2. Pinchamos en “Crear una consulta en modo SQL…” (puede buscar más información sobre SQL, pero básicamente es un lenguaje de consultas ampliamente usado en base de datos y… muy poderoso)
  3. Ingresamos lo siguiente:
    SELECT "Nombre Completo", "Código Curso" FROM "Mitabla" WHERE ( "Código Curso" LIKE '4º M%' OR "Código Curso" LIKE '8%' )

Lo anterior Seleccionará los datos contenidos en los campos “Nombre Completo” y “Código Curso” (este último se necesita para la condición que necesitamos) Desde la tabla “Mitabla”, pero solo aquellos cuyo curso sean 8vos o cuartos medios. Aquí viene el detalle de usar un paréntesis, porque son dos peticiones; usar un “or” porque es una cosa o la otra; usar un LIKE y un ‘%’ que permite decir que quiero aquellos campos que comiencen con un 8 (puede haber un 8A, 8B, etc.) y lo mismo con los 4tos Medios.

Esta misma lógica se usa para otras consultas compuestas, el punto importante es que la consulta SQL (una vez que presionamos el botón ejecutar) devolverá una tabla filtrada, independiente de nuestra tabla “Mitabla” lo que además asegura que los datos están a salvo.

Lo anterior es una gran diferencia a usar una hoja de cálculo, en donde si copias mal o pegas y guardas, ya no recuperas los datos sobreescritos.. Luego, quedaría ponerle un nombre a la consulta, por ejemplo “Solo8vosyCuartos” y al volver al formulario, debemos configurarlo para que esta vez lea los datos desde la consulta y no desde la tabla “Mitabla”. Esto se hace abriendo el navegador del formulario, botón derecho sobre el formulario (digamos que se llama “formulario1”) y en la opción “Datos” marcamos “tipo de contenido”-> “pregunta” y finalmente marcamos la consulta que queramos, en nuestro caso “Solo8vosyCuartos”.

Segundo caso especial: Varios estudiantes por hoja

Esta bien, ya dominamos el tema de las consultas, pero queremos, en un solo formulario, tener datos de dos estudiantes, por ejemplo, porque queremos escribirle una nota a cada uno y así gastar menos material. En este caso, es lo mismo que antes, pero agregamos un par de subformulario, cada uno de ellos leyendo datos de una consulta diferente y listo!

¿Otra solución?

Sí, se me ocurre que usar combinación de correspondencia también es una posibilidad, pero no te dará tanta libertad al momento de seleccionar los campos como el uso de SQL. Hay mucho material en Internet para profundizar, es increíble lo poderoso y simple que es este lenguaje, me ha salvado varias veces.

¡Ahora solo queda intentarlo!

Anuncios
base de datos·docencia·libreoffice Base·Ofimática·Problemas del día a día

Fin de año feliz con base de datos

En estas fechas es común imprimir una montaña de informes, de todo tipo, dentro de los cuales es importantísimo que los datos sean correctos. Cuando se trata de realizar cambios, estar revisando curso por curso, alumno por alumno, es un trabajo agotador y propenso a errores, por el mismo tedio de las tareas repetitivas, pero es justamente en este ámbito en donde la informática es implacable.

En vez de realizar los cambios uno a uno, mejor es realizar un simple filtro por las características que buscamos, que en base de datos es una consulta y con los datos obtenidos realizar lo que queramos.

Como ejemplo: Digamos que necesitamos cambiar el valor de la variable A, en todos los alumnos cuyo rendimiento sea mayor a “5”. La consulta nos quedaría:


UPDATE "tabla1"
SET "A" = 5
WHERE "rendimiento" > 5

y listo!

Lo anterior, si bien no es ampliamente conocido (algunos docentes siguen usando calculadoras.. en el 2015, generalmente por un tema de “comodidad”, aunque yo le llamo costumbre..) tampoco es la gran cosa. Sin embargo, el pensar en ese tipo de solución, me ha ayudado a buscar opciones en sistemas privativos ya establecidos (como Syscol) para realizar justamente tareas parecidas y créanme, el ahorro de tiempo es enorme.

Por lo tanto, no olvide pensar en “base de datos”, indague en su sistema y si no tiene uno, le recomiendo libreoffice base, para comenzar a realizar uno.. a fin de año, cuando el tiempo apremie de seguro lo necesitará!

base de datos·capacitaciones·docencia·investigación·libreoffice·libreoffice Base·Ofimática·Problemas del día a día

LibreOffice: Combinando correspondencia, varios registros en una sola hoja

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ó?

  1. Se creó una base de datos en LibreOffice Base con:
    1. Una tabla con los datos de los estudiantes beneficiados
    2. Una tabla con los datos de todos los estudiantes del establecimiento
  2. 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
  3. 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.
  4. 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)
  5. 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!).
  6. 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).