Velneo: panta rei. Desde mi perspectiva

Febrero 4, 2008

vDeveloper: vayamos por partes (iv). Campos fórmula en Velneo.

Archivado en: General, Inicio, Tablas — Agustin @ 10:20 am

Campos de tipo fórmula.

Los fórmula se diferencian esencialemente de los de tipo Alfa y numéricos en que la persistencia en disco es la fórmula en sí, no el resultado de la misma. Esto quiere decir que lo que se guarda es la fórmula que calcula el valor del campo , no el valor en sí. Esto implica que cuando queramos acceder al valor calculado la fórmula se recalcula. Esto lo tenemos que tener en cuenta a la hora de la presentar datos en pantalla a través de una rejilla en arquitectura C/S. Muchos registros como campo fórmula relentizará la presentación pues elevará el número de sockets que viajan por la red para poder mostrar los valores, sobre todo con el de tipo fórmula histórico.

Otra característica común es que no se pueden indexar, no podemos alimentar un índice con este tipo de campos, lógico por otra parte dado que se guarda la fórmula para calcular, no el valor calculado.

El uso de un tipo u otro depende del tip de  resultado final a obtener no de los parámetros que se usen para calcularlos, es decir, si lo que buscamos es un resultado tipo alfabético, usaremos un campo fórmula alfabética, aunque para su cálculo interevengan campos o variables de tipo numérico o de fecha. Las expresiones fórmula las construiremos con el asistente para la creación de fórmulas ya conocido

Los tipos son los siguientes:

- Fórmula numérica: buscamos un resultado de tipo numérico.

-Fórmula alfabética: buscamos un resultado alfabético, concatenando campos, variables o constantes. Es combeniente que la expresión fórmula comience por dobles comillas “”+fórmula.

-Fórmula fecha: bucamos un resultado tipo fecha.

-Fórmula tiempo: retorna un resultado tiempo. No suele ser muy utilizada al igual que el campo tipo tiempo.

-Fórmula histórico: con esta fórmula nos recorremos el histórico seleccionado completamente y se efectúa el cálculo de la fórmula por cada registro  del histórico. Mucho cuidado con este tipo de campos. Particularmente, no me gusta mucho usarlos pues relentizan muchísimo las ejecuciones cuando tenemos muchos datos de histórico. Yo prefiero hacer actualizaciones ( las veremos más adelante )  a un campo de la Maestra en el que llevar el cálculo de la suma de los históricos.

-Fórmula dinámica. A pesar de tratarse de un campo fórmula, tiene persistencia en disco. Este tipo de campo será utilizado cuando la definición de la fórmula deba ser establecida por el usuario en tiempo de ejecución. Aclarar que una cosa es la fórmula en sí y otra el resultado de ejecutarla; en este tipo de campo se guardará la fórmula pero su resultado solamente podrá obtenerse a través de otro campo fórmula (numérica, alfabética o fecha, en función del resultado que deba obtenerse) en cuyas propiedades se establezca como fórmula a ejecutar el campo tipo fórmula dinámica. El rango máximo del campo es 512 bytes.Si en un formulario se incluye un control de edición para editar este tipo de campo, en tiempo de ejecución se incrustará en el mismo un botón que dispara el asistente para la edición de fórmulas, para facilitar al usuario su composición.

Campos

A veces una información visual del tipo de campo que se está usando es muy eficiente.

A la izquierda teneis los logos que Velneo usa para indicarnos el tipo de campo que tenemos.

Febrero 1, 2008

Punteros esenciales: puntero a maestro y enlace a histórico

Archivado en: Inicio, Tablas, Tipos de enlaces — Agustin @ 3:38 pm

Enlazar tablas de datos en Velneo es fácil con el uso del enlazador en el esquema de tablas. Cuando conectamos dos tablas entre sí, se crean dos relaciones distintas, una desde la tabla que actúa como maestra hacia la que actúa como histórica y que llamaremos enlace histórico ( EH a partir de ahora) y otra desde la que actúa como histórica hacia la que actúa como maestra y que llamaremos puntero a maestro (PAM a partir de ahora ). El EH nos permite relacionar una ficha de la tabla maestra con varias fichas de la tabla histórica ( relación singular->plural ) con lo que desde una ficha de maestro podemos ver muchos históricos. En cambio el PAM relaciona cada ficha de la tabla histórica con una sola ficha de la tabla maestra ( relación singular->singular ).

En C y en C++ ,un puntero es un tipo especial de variable, que almacena el valor de una direccion de memoria. En Velne

o un puntero es un campo de una tabla en el que se guarda la posición de un registro en otra tabla. Si pudiéramos hacer un simil con la física, un puntero es como un vector. Su punto de origen es un registro de la tabla histórica, su sentido va desde la histórica a la maestra y su punto destino es e registro de la tabla maestra apuntada.

¿Para qué sirve el PMA? Sirve sobre todo para saber siempre a qué registro de la maestra estoy aputando, en un ejemplo concreto el puntero a maestro CLIENTES desde una tabla CABECERA DE FACTURAS, me indicará a qué ficha de CLIENTES  pertenece dicha FACTURA. El dato que guarda el campo puntero es el CODIGO de la ficha del cliente al que pertenece la factura.

La utilización de los PAM también nos dá economía de espacio en disco. El hecho de tener guardado sólo el código de la ficha maestra nos evita introducir los datos del cliete cada vez que le hagamos una factura. Simplemente indicándole a qué cliente pertenece mediante el puntero, tenemos la relación establecida.

El EH nos permite conectar una única ficha con muchas fichas de su histórico. Todo EH se establece mediante un índice de la tabla histórica pero no se guarda en un campo como el PMA sino en un componente especial de las tablas llamado Históricos. Los enlaces a histórico pueden ser múltiples, dependiendo de qué indice usemos en la tabla histórica para acceder a sus datos desde la maestra.

Cuando realizamos un enlace entre dos tablas mediante el esquema de tablas y el enlazador se producen varios cambios en las mismas, sobre todo en la tabla que actúa como histórica. Seguiremos con el ejemplo de CORDILLERAS (maestra ) y MONTAÑAS (histórica ).

TablasSi nos fijamos en la tabla Montañas , veremos que se han producido dos cambios: en los campos ha aparecido uno nuevo CORDILLERAS.Este es el puntero a la tabla maestra

Si entramos en sus propiedades veremos ahora que está Enlazado a Tabla de Datos Maestra y el nombre a la tabla que apunta, CORDILLERAS.

Además se ha creado un índice nuevo llamado también Cordilleras, del tipo Aceptar repetidas, es decir, puede haber más de un registro de esta tabla (MONTAÑAS ) cuyo puntero sea el mismo a CORDILLERAS:  puede  haber muchas MONTAÑAS que pertenezcan a la misma CORDILLERA. Vemos también que ese índice está “alimentado” por el campo puntero Cordilleras.

En la tabla maestra, ha aparecido un nuevo componente histórico, el historico a montañas. Si abrimos las propiedades de dicho EH, veremos que apunta a la tabla MONTAÑAS a través del índice CORDILLERAS  de dicha tabla. Esto permitirá que desde una ficha de CORDILLERAS veamos un histórico de sus MONTAÑAS ordenado por el índice, es decir, nos ordenará el listado de MONTAÑAS  de dicha CORDILLERA  según el orden en que los hayamo introducido.

Imaginemos que queremos que nos ordene ese histórico por la altura de dichas montañas. Creamos en la tabla un campo altura numérico de longitud 3 y con dos decimales sin signo. Creamos un índice nuevo al que podemos llamar Alturas que estará formado por los campos Cordilleras y Alturas, “alimentamos” el índice con los valore de los dos campos. En la tabla CORDILLERAS, nos posicionamos sobre la carpeta Históricos y damos a la tecla Insert o bien, tabla->nuevo objeto de tabla->enlace histórico.

Tabla de datos enlazada: MONTAÑAS  Indice: Alturas. Al cargar ahora con este nuevo EH la tabla de MONTAÑAS desde una ficha de COORDILLERAS nos mostrará las montañas que pertenecen a esa cordillera ordenadas por su altura ( siempre de valores más bajos a valores más altos ).

Podremos de esta forma crear los EH que necesitemos para poder ver los históricos de una ficha maestra ordenados de la forma que necesitemos, pudiendo jugar con la composición de los índices que usamos para enlazar contra la histórica.

 

 Espero que los enlaces empiecen a ser más claros y que veais la potencia que nos brindan  a la hora de organizar la información de nuestras aplicaciones de una manera lógica y sencilla.

 

Enero 31, 2008

vDeveloper: vayamos por partes (iii)

Archivado en: General, Tablas — Etiquetas:, — Agustin @ 8:50 am

Ya tenemos nuestra primera tabla creada, sólo con los campos e índices que vienen por defecto al crear una Maestra.

 En el vDeveloper tendríamos la tabla con cada uno de sus componentes, en nuestro caso los dos campos y los cuatro indices que se han creado por defecto.

Si nos fijamos, a la derecha de la Descripción de la tabla, a parece la letra D. Esto significa que la tabla tiene permanencia en el Disco.

Si nos posicionamos sobre la tabla y usamos la combinación de teclas Alt+ Intro llegaremos a un cuadro de diálogo en el que tendremos más información sobre la tabla

En este cuadro de propiedades de la tabla, podremos cambiar tanto el plurarl como el singular, el tipo de tabla, en qué lugar reside la tabla, es decir si está en Disco Compartida y en ese caso en qué directorio, el de la aplicación o un directorio aparte en el que compartan tablas de datos distintas aplicaciones, en Memoria, el número de Bytes que ocupa cada ficha así como el número de campos e índices que tiene. Estos tres datos numéricos son calculados por Velneo y no es posible cambiar su valor

El check de Privada afectará más adelante al acceso o no desde el Editor de Personalizaciones de Velneo. Si estuviera marcada como Privada, no es posible el acceso para personalizar ciertos objetos visuales.

Se puede añadir un comentario que no se verá en ejecución y que sólo será visible con el vDeveloper. Puede ser interesante usar este comentario sobre todo a la hora de documentar, cuando la aplicación ya tiene muchas tablas.

Poscionémonos sobre el campo Nombre y hagámos doble click con el botón izquierdo del ratón.

Entraremos en el cuadro de propiedades generales de un campo.

Nombre: es el nombre o descripción que tendrá el campo. Será el que aparezca cuando incluyamos el campo en un objeto visual. Para el nombre del campo no podremos usar los caracteres reservados % ni $

Enlace: en un artículo posterior trataremos los distintos tipos de enlaces que existen en Velneo. Por ahora, nos quedaremos con que los campos que no dependen de otras tablas NO están enlazados.

Tipo: En el podremos escoger entre distintos tipos de campo Alfabético, Alfa128, numérico, formula, objeto… los veremos con más detenimiento más adelante.

Formato: dependiendo del tipo de campo tendremos que decir su longitud ( común ) el número de decimales (sólo numéricos) signo ( sólo numéricos), su rango o valores mínimo y máximo que le permitimos tener.

Contenido inicial: es una expresión fórmula que será el contenido inicial del campo.

Asistente de fórmulas

Con el asistente para la edición de fórmulas nos vamos a encontrar muchas veces en el vDeveloper. Es una herramienta muy potente para crear fórmulas de todo tipo, pues podemos acceder a una serie de elementos ya incluidos en el vDeveloper y que nos facilitarán la labor en muchos aspectos del diseño de nuestro proyecto. Podremos  acceder a funciones ya programadas, a campos, a variables globales, locales y de sistema. En una entrada futura veremos esta magnífica herramienta con más detenimiento.

Tipos de campos

Velneo nos ofrece la posibilidad de usar varios tipos de campos, entre ellos los de tipo alfa, los numéricos, fechas, horas, tiempo, objetos y fórmulas.

Alfabéticos :tipo alfabético estándar que incluye todos los caracteres de la tabla ANSI. Se recomienda usar los tipos Alfa  para ahorrar espacio en disco. El rango máximo del campo es 512 bytes. De hecho, dado que Alfa128 cubre casi todos los caracteres escepto los especiales como \ ó @ , es recomendable el uso de campos alfabéticos sólo en el caso de necesitar este tipo de caracteres, p. ej en un campo en el que tengamos que guardar una dirección de correo electrónico o una URL.

Alfa 128: es un tipo alfanumérico,incluye letras mayúsculas, minúsculas, acentos, signos de puntuación y números. Este tipo de campo es empaquetado y cada 8 caracteres que el usuario introduzca se comprimen en 7 para grabarlos al disco. El rango máximo del campo es 512 bytes.

Alfa 64: es un tipo alfanumérico, incluye letras mayúsculas, signos de puntuación y números. Este tipo de campo es empaquetado y cada 4 caracteres que el usuario introduzca se comprimen en 3 que serán grabados al disco. El rango máximo del campo es 512 bytes.

Alfa 40: Es un tipo alfanumérico: incluye letras mayúsculas, números, guión y espacio. Este tipo de campo es empaquetado y cada 3 caracteres que el usuario introduzca se comprimen en 2 que serán grabados al disco. El rango máximo del campo es 512 bytes.

Numérico: Usado para datos numéricos. El rango máximo es de 6 bytes y puede tener decimales y signo.

Fecha: Permite introducir fechas con diversos formatos. Los formatos permitidos son: ddmmaa,dd-mm-aaaa, dd-mmm-aaaa. El carácter de separación puede ser el guión o la barra.

Hora: Permite introducir horas en formato HH:MM:SS.

Tiempo: Permite introducir tiempos con el formato DD:MM:AA HH:MM:SS. Es aconsejable tratar las fechas y las horas por separador, es decir, crear un campo de tipo Hora y un campo de tipo Fecha en lugar de uno de este tipo.

Booleano: Es un campo lógico que permite fijar el contenido del mismo como SÍ / NO (1 ó 0). Veremos cómo a la hora de crear índices, la existencia de un booleano en la tabla nos va a permitir condicionar según el valor de ese booleano ( 0 ó 1 ) la indexación o no de una ficha.

Texto: Su contenido es texto de longitud variable, ocupando solamente el tamaño del contenido. Normalmente es usado para anotaciones en la ficha de un cliente, artículo, etc. En formularios de edición de ficha existe un control específico para editar este tipo de campo. En dicho control de edición sólo hay que tener en cuenta que en ejecución, un salto de linea se introduce con la combinación de teclas Ctrl+Intro, combiene recordárselo al usuario con un pequeño texto estático encima del control de edición.

Objeto Dibujo: Su contenido es un gráfico con cualquier resolución y número de colores que será importado en tiempo de ejecución. Normalmente son usados para ver la imagen del artículo en su ficha, la foto del logotipo del cliente, etc. En formularios de edición de ficha existe un control específico para editar este tipo de campo.

Objeto Texto enriquecido: Su contenido es un documento de texto RTF. Se diferencia del Objeto Texto en que admite cambiar fuentes, estilos, alineación, etc. en tiempo de ejecución. En formularios de edición de ficha existe un control específico para editar este tipo de campo.

Objeto OLE genérico: Su contenido será cualquier objeto OLE. Para cargarlo en tiempo de ejecución se utilizará el cuadro de diálogo Insertar Objeto estándar de Windows. Una vez incorporado el objeto OLE a Velneo podrá ser lanzado directamente en el programa correspondiente haciendo doble clic sobre él. En formularios de edición de ficha existe un control específico para editar este tipo de campo.

Objeto E-mail: Su contenido será un mensaje de correo electrónico (un e-mail). En formularios de edición de ficha existe un control específico para visualizar el contenido de un campo de este tipo.

Objeto Binario: Su contenido será cualquier tipo de archivo; éste será guardado en el contenedor en formato binario. Existen funciones de proceso específicas tanto para importar como para exportar archivos en este tipo de campos. La única forma de trabajar con este tipo de campo es vía proceso, pues no existe un control específico para su edición.

Cuando en una tabla del proyecto se introducen campos de tipo Objeto, al ejecutar la aplicación se crearán además del .dat y del .idx dos nuevos ficheros llamados tabla.cnd que es el contenedor de objetos de la tabla y el tabla.cni que es el índice del contenedor. Este tipo de campos no se guardan por tanto en el .dat como el resto de los campos y tampoco pueden ser utilizados como componentes de índices.

Veremos en el siguiente artículo los campos de tipo fórmula.

« Entradas más recientesEntradas más antiguas »

Blog de WordPress.com.