Variable

Se trata de un objeto cuya finalidad es la de almacenar datos individuales en disco o en memoria. Son datos globales a la aplicación y comunes, en el ámbito de red, para todos los usuarios si son en disco, y de carácter local si son en memoria. Si un usuario modifica una variable global en disco, ésta será modificada para el resto de los usuarios, si modifica una variable global en memoria, el cambio solo le afectará a él.

Podremos crear una variable ejecutando la sub-opción del mismo nombre de la opción nuevo objeto del menú objeto o desde la galería de objetos (Tecla Insert).

Las propiedades de este objeto son:

Identificador

Etiqueta alfanumérica que identifica de forma unívoca al objeto dentro del proyecto. Este identificador será el que usemos para referenciarlo en otras propiedades de otros objetos.

Constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca un objeto no puede haber duplicidad.

Nombre

Etiqueta alfanumérica que servirá como descriptor del objeto. Se usará para presentar información del objeto en otros objetos y en los inspectores.

Podemos definir una etiqueta por cada idioma presente en el proyecto.

Estilos

Podemos definir el estilo privado que limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.

Comentarios

Esta propiedad nos permite documentar el uso del objeto.

Persistencia

Esta propiedad nos permite definir la persistencia de la variable. Los valores posibles son:

Disco

El valor de la variable será común para todos los usuarios de la aplicación; si un usuario modifica su valor, este cambio afectará al resto de los usuarios.

Memoria

El valor de la variable tiene carácter local, es decir, si un usuario modifica su valor el cambio solamente le afectará a él.

Tipo

Permite definir el tipo de dato que va a manejar la variable. Los tipos disponibles son:

  • Alfabético: usado para datos alfanuméricos.

  • Numérico: usado para datos numéricos. Se mantiene la precisión numérica hasta el quinto decimal.

  • Fecha: usado para datos de tipo fecha. Por defecto admite el formato de fecha ISO 8601. El carácter de separación puede ser el guión o la barra.

  • Hora: usado para introducir horas en formato HH:MM:SS. No almacena milisegundos.

  • Tiempo: usado para introducir tiempos que son la unión de una fecha y una hora con el formato DD:MM:AA HH:MM:SS.sss

  • Booleano: es un tipo lógico que permite definir el contenido como 1 ó 0 (Sí o No).

Debemos asegurarnos de que el tipo de dato seleccionado se corresponda con el tipo de valor a almacenar. Por ejemplo, si vamos a manejar datos alfabéticos la variable tendremos que definirla como alfabética ya que, si la definimos como numérica, al asignarle una cadena, no guardaría nada.

Array

Esta propiedad nos permite hacer que la variable sea un array unidimensional.

Debemos asegurarnos de que el tipo de dato seleccionado se corresponda con el tipo de valor a almacenar. Por ejemplo, si vamos a manejar datos alfabéticos la variable tendremos que definirla como alfabética ya que, si la definimos como numérica, al asignarle una cadena, no guardaría nada.

Dimensiones

Esta propiedad solamente estará activa cuando el valor de la propiedad array sea verdadero. Nos permite declarar el número de ítems que tendrá el array.

Decimales

Esta propiedad solamente estará activa cuando el valor de la propiedad tipo sea numérico. Nos permite declarar el número de decimales de la variable. Podrá especificar hasta 6 decimales que son los que se garantiza su precisión.

Signo

Esta propiedad solamente estará activa cuando el valor de la propiedad tipo sea numérico. Define si la variable de tipo numérico tiene signo.

Mínimo

Esta propiedad solamente estará activa cuando el valor de la propiedad tipo sea numérico. Permite establecer el rango límite mínimo válido para la entrada de valores.

Máximo

Esta propiedad solamente estará activa cuando el valor de la propiedad tipo sea numérico. Permite establecer el rango límite máximo válido para la entrada de valores.

Ámbito de las variables globales

El contenido de una variable en disco es común a todos los usuarios y planos de ejecución (tanto en los clientes como en el servidor).

Por tanto, si desde una sesión de Velneo vClient se modifica una variable global en disco, esta modificación afectará tanto al resto de los clientes que estén ejecutando la misma instancia como a los procesos que hagan uso de ella en el servidor (procesos ejecutados en tercer plano).

Debemos tener en cuenta que cada vez que usamos una variable global con persistencia en disco el sistema ha de leer su valor en el servidor para asegurarse de que el mismo está actualizado, esto, en ejecución a través de internet puede penalizar el rendimiento de la aplicación.

Por este motivo no aconsejamos su uso en contenidos iniciales, especialmente en campos de tipo fórmula, ya que el contenido de este tipo de campos se calcula dinámicamente, por lo que, a la hora de presentar un campo en una lista, por ejemplo, por cada registro a presentar en la lista se deberá leer el valor de la variable global en el servidor para calcular la fórmula.

Las variables globales con persistencia en memoria son globales a la máquina en la que se haga uso de ellas. No hay replicación entre clientes y servidor ni viceversa.

Es decir, que la modificación que haga un usuario a una variable global en memoria afecta única y exclusivamente a esta sesión de Velneo vClient. No afecta a otras sesiones de Velneo vClient (ni abiertas en la misma máquina ni en máquinas distintas) ni al servidor.

Por ejemplo, si modificamos una variable global en memoria en un proceso ejecutado en primer plano y lanzamos desde éste un proceso en tercer plano (ejecución en el servidor) que use esa misma variable global, no se replica el valor dado en esa sesión de Velneo vClient, sino que tomará el valor que tenga el servidor.

Si modificamos una variable global en memoria en un proceso ejecutado en 2º plano y ejecutamos al mismo tiempo otros procesos en 2º plano que hagan uso de la misma, el cambio afectará a todos ellos.

Que una variable sea global implica que, cuando modifiquemos el valor de una variable global durante la ejecución de una aplicación, se tendrán que recalcular todas las propiedades que sean de tipo fórmula de todos los objetos de la interfaz (controles de formulario, condiciones activo/visible, columnas de rejillas, etc.), por lo tanto, en la medida de lo posible debemos hacer uso de variables locales a lo objetos en lugar de variables globales.

Última actualización