martes, 22 de marzo de 2022

Macros en LibreOffice Base (II)

LibreOffice

Voy siguiendo un manual que encontré hace poco y el siguiente tema es definir variables.

Para las personas neófitas en la programación, les recomiendo este el artículo de la Wikipedia que no está mal, ver artículo.

En el siguiente paso, aprenderemos a definir las variables que vamos a utilizar a lo largo del desarrollo de nuestra macro.

Al comienzo de la rutina, la instrucción Dim se usa para definir las variables que se utilizarán en nuestros pequeños programa, repito que en ningún caso debemos de programar grandes funciones para crear nuestras macros. 

Aunque la programación en Basic no necesita las definiciones de las variables, al comienzo de nuestra andadura en programación, definiremos todas aquellas que nos hagan falta, para que no se convierta en un caos nuestra estilo de progamación.

Utilizaremos la opción "option Explicit" al principio de un módulo. Con esta opción se aseguran que todas las variables tengan que estar declaradas, si una variable no se ha declarado, al ejercutarse el programa mostrará un error y detendrá su ejecución.

Seguidamente muestro como quedaría la definición de una variable.

Recordamos que para que nuestro código funcione tiene que estar dentro de un comienzo de función y un final, quedaría como sigue.

option Explicit /* incluimo esta instrucción indicando que es obligatorio definir las variables

Sub asignar_variable /* comienzo de la función
Dim apellidos As String /* definción de nuestra variable
apellidos = "Pérez" /* asignación de valor a variable
End Sub /* final de la función

En este caso he definido una variable llamada "apellidos" de formato String, con esto estamos indicando la variable apellidos puede contener cualquier tipo de caracter, número, letras o caracteres especial.

Para asignar un valor a nuestra variable, quedaría como sigue.

apellidos = "Pérez"

A partir de este momento la variable apellidos contiene el valor  "Pérez".

Observe que la opción "option Explicit" se define fuera de la función, ya que va a afectar a todas las macros o funciones. Le animo a que haga pruebas poniendo fuera y dentro esta instrucción para ver los resultados.

Según transcurra nuestro curso, iremos desarrollando macros que necesitarán de variables de otros tipos, en este capítulo no nos pararemos a explicar todas.

Basic como otros lenguajes de programación tiene unas normas para los nombres que hay que seguir, los nombres de las variables deben comenzar siempre por un carácter alfabético, solo se pueden usar caracteres alfabéticos (A-Z o a-z), números y el carácter de subrayado o barra baja ( _ ). No se permiten caracteres especiales y aunque se permiten espacios bajo determinadas condiciones, es mejor evitarlos.

jueves, 3 de marzo de 2022

Comprender los sucecos en LibreOffice Base

LibreOffice

Antes de comenzar a trabajar, debemos haber leido este artículo, Configurar LibreOffice para programar, leido este, pasamos a dar cuenta del tema que nos trae, comprender el funcionamiento de sucesos o eventos.

Para comenzar el trabajo crearemos una base de datos con datos mínimos, en mi caso he creado una tabla con los campos nombre, apellido1, apellido2 y fecha de nacimiento. A continuación he crado un  formulario con el asistente, hecho esto, paso a explicar nuestra primera macro.

Alguna persona que está leyendo este artículo puede formularse la pregunta, ¿que ese eso de sucesos?, ¿para que sirven los sucesos?, ¿y si no quiero hacer uso de los sucesos?, vamos a intentar contestar algunas de estas preguntas.

Supongamos que tenemos abierto un formulario en nuestra base de datos y vamos a introducir algunos registros, haga clic sobre uno de los campos que puede rellenar, al hacer clic en este campo, aunque no se vea o no tenga señal de ello, se activa un suceso, en concreto el suceso "Recepsión de foco", en otras bases de datos se conocen los sucesos como eventos. 

Cuando pasa el cursor de un campo a otro se activan dos sucesos, el primer suceso que se activa es "Perdida de foco" del primer campo donde estaba el cursor situado y al situar el cursor en el siguiente campo se activa el suceso "Recepsión de foco".

Otro ejemplo que encontramos es al pulsar un botón que ha diseñado y definido en un formulario, ejecuta el suceso "Botón de ratón pulsado", de esto sacamos en conclusión que LibreOffice tiene un control muy alto de lo que sucede en el formulario mientras trabajamos, todo esto sucede aunque parezca que no pasa nada.

Esto nos lleva a pensar que los sucesos están ahí para aprovechar su potencia, solo nos queda que imaginar que a cada suceso puedo asignarle unas acciones que previamente he programado, para que cuando se active el suceso en cuestión, ejecute lo programado. 

No hay que decir, que las personas que no quieran hacer uso de estos sucesos o eventos, no tienen obligación de ellos y que pueden vivir tranquilamente con un diseño más básico de sus trabajos.

Pasando a la acción, abirmos el formulario que hemos creado en modo edición. Hacemos clic sobre uno de los campos y activamos los pivotes de control. Hacemos doble clic sobre el campo activo y nos muestra el siguiente cuadro de diálogo, en este hacemos clic en la pestaña Sucesos.

sucecos en LibreOffice Base

Se observa en este cuadro de diálogo todos los sucesos asginarle una macro. Para saber más de estos sucesos puede consultar este artículo en LibreOffice, Sucesos.

Antes de asignar un suceso tendrá que programar una macro, no entramos en este artículo en decidir el lenguaje en que va a hacerlo.

En este punto es cuando nos vamos a complicar un poco el diseño de nuestra base de datos. Para asginar una macro a un suceso, haga clic en el botón de puntos suspensivos que tiene el suceso a su derecha.

sucecos en LibreOffice Base

Le mostrará el siguiente cuadro de diálogo, como puede observar hay un Suceso que tiene asignado una macro que previamente se programo. Haga clic en botón Macro para asingar.

sucecos en LibreOffice Base

Nos muestra el siguiente cuadro de diálogo, en mi caso he seleccionado una macro que tenía definida en la base de datos, seleccionada la macro haga clic en el botón Aceptar.

sucecos en LibreOffice Base

Le vuelve a mostrar el cuadro de diálogo y haga clic en el botón Aceptar, ya tiene la macro asignada al suceso deseado.

sucecos en LibreOffice Base

Finalmente volvemos a nuestro formulario para probar el modo trabajo la macro que hemos asignado.

Al comienzo puede resultar un poco extraño o lioso, pero con paciencia lo conseguirá.