Validación de datos

Con la experiencia te darás cuenta que la probabilidad de que contenga errores se incrementa considerablemente conforme aumenta el tamaño del código. Una fuente frecuente de errores es la que se deriva de la introducción de datos al programa por parte del usuario. Es nuestra responsabilidad como programadores el minimizar este tipo de errores, esto lo logramos filtrando los datos que el usuario alimenta, es decir, VALIDANDO LOS DATOS.

Verás que la validación de datos consume bastante líneas de código, a veces muchas más que el proceso en sí, por ello es un tema muy importante en programación.

LibreOffice Basic cuenta con algunas funciones que nos ayudan a validar datos, en muchas ocasiones tendrás que ingeniártelas tu mismo. Veamos algunas de ellas, pero recuerda que son solo guías, pues las opciones son tantas y tan variadas como las que implementen los programadores.

Para el mejor aprovechamiento de este tema debes de saber que los lenguajes Basic son muy nobles en la conversión de datos de un tipo a otro. Muchas de estas conversiones las puede hacer el lenguaje de forma directa, a esta conversión se le llama implícita. Pero lo recomendable es que nosotros controlemos, siempre que sea posible, estas conversiones (forma explicita). Nos apoyamos en varias funciones de LibreOffice Basic para hacer estas conversiones.

Como sabes, la instrucción MsgBox espera como parámetro requerido un argumento llamado Mensaje de tipo String, es decir una cadena de texto.

MsgBox Mensaje As String, [Tipo As Integer], [Titulo As String]

Veamos unos ejemplos:

Observa que aunque le pasemos un número o una fecha o incluso un valor booleano, la instrucción MsgBox sigue trabajando. Esto es porque el lenguaje hace automáticamente una conversión de tipos (de forma implícita). Mientras le sea posible, convierte el tipo que recibe a una cadena de texto (String). Lo ideal es que nosotros hagamos esta conversión de forma explicita, como en el siguiente ejemplo.

La función CStr(valor) convierte el tipo de “valor” a una cadena de texto (String). De esta forma, casi podemos estar seguros de que no nos dará un error inesperado. LibreOffice Basic cuenta con funciones para la conversión a la mayoría de los tipos de variables posibles (Iver tabla).

LibreOffice Basic cuenta con otras funciones que nos ayudan a saber qué tipo de dato tiene una variable, veamos las siguientes. Cuando necesites saber si una variable contiene un número usamos IsNumeric.

Al ejecutar esta macro introducimos un número en la ventana de diálogo,…

…la función IsNumeric (sDato) se encargará de comprobar que el dato introducido sea numérico.

  • Ejecuta la macro otra vez y prueba a introducir un carácter no numérico.

Cuando necesites saber si una variable contiene una fecha usamos IsDate.

Y cuando necesites saber si una variable es una matriz usamos IsArray.

Veamos algunos ejemplos de validaciones comunes. Ni mucho menos están todas, estos ejemplos serciran de referencia para que las adaptes y complementes a tus necesidades. Obligamos al usuario a introducir un dato, el que sea, la única condición es que no sea una cadena vacía.

Habrás observado en el ejemplo anterior, que aunque el usuario presione Cancelar, de todos modos no le hacemos caso y lo obligamos a introducir un dato. Si bien lo podemos hacer, no es común, lo habitual es proporcionar siempre al usuario una forma de cancelar un proceso.

Ahora, obligamos al usuario a introducir una cadena de texto, que no sea número ni fecha.

O que solo valide  los números introducidos.

O que introduzca una fecha.

Un número, con un rango definido, por ejemplo, entre 50 y 100.

Una fecha que no sea fecha futura.

Para el siguiente ejemplo necesitamos conocer dos nuevas instrucciones: Mid e InStr.

Mid nos sirve para extraer una cadena de otra. Su sintaxis es: Mid (cadena, inicio, longitud). Por ejemplo:

InStr encuentra la posición de una cadena en otra. Su sintaxis es: InStr (comienzo, Cadena donde buscar, La Cadena a buscar). Ejemplo:

En este ejemplo le pedimos al usuario que introduzca solo vocales. Pero ya sabes como somos los usuarios, seguro que introducen lo que se les da la gana, así que filtraremos su texto dejando solo las vocales.

No lo olvide, es muy importante que valides de los datos que introduce el usuario. Y si conjugas esto con el control de errores, te aseguro que podrás minimizar el riesgo de fallos en tus aplicaciones en un porcentaje bastante alto.