Equivalencias entre BBDD SQL y Velneo

Introducción

Una de las ventajas de Velneo en cuanto a productividad y eficacia reside en la potencia de su Base de Datos y en lo “diferente” que resulta en ciertos aspectos al estar integrada en la propia plataforma. Esto hace que la BBDD de Velneo pueda ofrecer más rendimiento y eficacia utilizando sus índices, actualizaciones, triggers, punteros, …. siendo más parecida a una base de datos No SQL, Velneo trabaja en lo que denominamos un modelo real.

esquema_velneo.jpg

¿Implica esto que si vengo de SQL no me servirá Velneo?

¡Por supuesto que te servirá Velneo!. Simplemente tendrás que adaptarte a su forma de tratar la BBDD y en poco tiempo valoraras lo mucho que te ofrece.

Una de las características, Life is soft, que más valoramos cuando empezamos a programar con Velneo, por ser una característica diferencial respecto a otras herramientas de desarrollo, es la persistencia de las relaciones entre tablas.

 Si no tuviésemos esa características estaríamos obligados a, por ejemplo:

  • Programar constantemente instrucciones para hacer lectura de datos en tablas relacionadas, tanto maestras como históricas.

  • Hacer lectura de información en tablas relacionadas para almacenarla en variables y así poder presentarla en formularios, rejillas, informes, etc.

  • Escribir código para leer datos históricos de un registro para procesarlos.

Estos son algunos ejemplos que todo programador vive en su día a día de forma constante y que gracias a las relaciones persistentes de la base de datos de Velneo, una vez creada la relación entre dos tablas no sólo queda definida sino que además se convierte en una autopista de información para que el programador pueda obtener información de las tablas maestras y de las históricas relacionadas.

 Un programador de Velneo disfruta al crear las relaciones de las tablas pues sabe que puede obtener, por ejemplo, la bandera del país del cliente de la factura de la línea de detalle, simplemente abriendo ramas del árbol de campos, sin escribir ninguna línea de código y además lo puede obtener tanto a nivel de datos en un proceso como visualmente para mostrar esa información en cualquier objeto visual.

tablas_campos.jpg

La base de datos de Velneo también crea de forma automática los “enlaces plurales”. De forma inteligente y basándose en los índices creados en las tablas históricas que apuntan a su tabla maestra.

Por ejemplo, si en la tabla de facturas añado el campo puntero maestro al cliente, se crea automáticamente el índice por ese campo y la base de datos genera también de forma automática la relación enlace plural en la tabla de clientes que permitirá obtener las facturas de un cliente concreto o de todos los clientes de una lista de forma automática y simplemente usando el comando “Cargar plurales Facturas_Cliente”.

Estos automatismos además de facilitar el desarrollo de una aplicación son magníficos aliados a la hora de mantenerla ya que cualquier cambio que realizamos en los índices o enlaces a tablas son refrescados y refactorizados en la aplicación, sin necesidad de repasar cientos de sentencias de acceso a base de datos y permitiendo que la revisión de código sea realmente sencilla gracias a otros de nuestros grandes aliados Life is soft, los inspectores.

Si vienes de utilizar SQL, evidentemente para obtener el máximo rendimiento en el desarrollo de aplicaciones empresariales con Velneo utilizando la potencia de su BBDD, es conveniente conocer sus instrucciones equivalentes.

Para ayudarte, te mostramos unos ejemplos de las instrucciones más usuales en SQL y las opciones de cómo hacerlo en Velneo.

La estructura de cada ejemplo se basa en la instrucción en SQL, su equivalente en Velneo y por último, en el caso de que existan se muestran otras opciones, ya que Velneo aporta soluciones propias y nativas a necesidades de otros lenguajes que en Velneo están ya contempladas.

Select básico

En este primer ejemplo, vamos a ver una búsqueda sencilla. Suponiendo que tenemos una tabla de clientes, con un campo “Tipo”, queremos buscar todos los clientes con el tipo=2.

Instrucción SQL

La consulta SQL típica más o menos sería así:

SELECT * FROM clientes WHERE tipo=2

Equivalencia Velneo

La tabla tendría esta forma:

velneo_vs_sql_tabla_clientes.png

Como es lógico, si las búsquedas por ese campo van a ser habituales, es recomendable tener definido un índice para él. En caso contrario, habría que hacerlo usando un filtro, y penalizaría la búsqueda. Aún así, si quieres usar el comando “Filtrar lista” en Velneo, es recomendable que lo ejecutes en el servidor (lanzando el proceso en 3er plano).

En Velneo las búsquedas siempre las podemos usar de dos maneras: vía interface o vía proceso. Para usarlas vía interface debemos utilizar el objeto Búsqueda. Este objeto permite definir un formulario para que el propio usuario en tiempo de ejecución pueda establecer, en este caso, el valor para el campo Tipo. 

Otras opciones

Otra opción es obtener el resultado vía proceso. Para este caso tan sencillo dónde queremos directamente los clientes del tipo 2, sería la mejor opción.

Sería tan sencillo como:

 velneo_vs_sql_proceso.png

Otra opción sería el caso de que un proceso fuera lanzado por ejemplo desde un formulario de un maestro de Clientes (ciudades, tipo de clientes, etc) NUNCA usaremos una búsqueda sino que navegaremos por los punteros permanentes, es decir, teniendo los índices adecuados y en consecuencia los plurales:Cargar Plural del maestro en el que estamos situados (Clientes tipo 1, o Clientes tipo 2).

Si el proceso fuera lanzado desde un país que sería maestro de ciudades, el origen sería el propio país, con la instrucción Cargar Plural de las ciudades estaremos en la misma situación que el punto anterior (origen ciudades) y por tanto el resto de instrucciones sería la misma.

Para terminar, si fuera lanzado desde un cliente, el proceso podría cambiar su origen:

Leer ficha de maestro (países, tipos), con lo que esa línea se sitúa en el maestro y ya tiene otro origen. Por tanto, la siguiente instrucción sería la del ejemplo de los clientes.

Y así, múltiples combinaciones que no se verían alteradas en su funcionamiento y que no  requieren apenas programación en el caso de cambiar la estructura de la base de datos.

Vamos a ver cómo utilizar el objeto búsqueda que es una de las posibilidades adicionales:

Si lo que queremos es utilizar el objeto búsqueda, podemos hacerlo realizando los siguientes pasos:

Creamos un formulario origen la tabla de clientes. Añadimos el campo Tipo utilizando un combobox (asumimos que el campo Tipo es un enlace a tabla estática)

velneo_vs_sql_form_busqueda.png

 Creamos un objeto búsqueda, y como partes de la búsqueda indicamos Tipo=Tipo. Le indicamos a su vez que use el formulario anterior.

velneo_vs_sql_busqueda.png

Para lanzar la búsqueda tenemos dos opciones: desde una acción o desde proceso.

  1. – En una acción: Definimos la búsqueda como primer objeto y una rejilla de clientes (p.e.) como segundo.

 

velneo_vs_sql_busqueda.png 

  1. – En un proceso usamos la instrucción “Ejecutar búsqueda”

 velneo_vs_sql_busq_proceso.png

Select varias tablas

Veamos esta vez como trabajar con tablas relacionadas.

Suponiendo la estructura típica de clientes y facturas, donde la tabla facturas es histórica de clientes, supongamos que queremos todas las facturas de los clientes tipo 2. Y pensando en que la salida puede ser una rejilla o un informe, queremos poder visualizar tanto el nombre del cliente, como la fecha y el total de la factura.

Instrucción SQL

La consulta típica en SQL sería algo así:

Select C.Nombre, F.Fecha, F.Total, F.Cliente, C.ID

from Clientes C, Facturas F

where F.Cliente=C.Id

and C.Tipo=2 

Equivalencia Velneo

Para implementarlo en Velneo, utilizaremos la búsqueda definida en el artículo Velneo vs SQL: Select básico y un proceso que nos retorna las facturas de una lista de clientes. El proceso sería este:

Velneo_vs_sql2_proceso.png

Como vemos en la imagen, el proceso tiene como entrada una lista de clientes y como salida una lista de facturas. Y las instrucciones del proceso cargan el plural facturas, y añade la lista resultante (de facturas) a la salida del proceso.

De esta manera, si queremos sacar el resultado por ejemplo en una rejilla, para mostrar el nombre del cliente simplemente añadimos una columna con el contenido #CLIENTES.NOMBRE (comprobar). tal y como se muestra en la siguiente imagen: 

Velneo_vs_sql2_rejilla.png

La opción de separar la obtención de las facturas de una lista de clientes en un proceso es por el concepto de entrada-salida. De esta manera colocar todo en una acción es realmente sencillo: 

Velneo_vs_sql2_accion.png

Vemos que realizar determinados tipos de consulta en Velneo es realmente sencillo en cuando nos acostumbremos al concepto de entrada-salida de los objetos.

Búsqueda entre fechas

Vamos a ver como implementar el equivalente en Velneo a una típica búsqueda entre fechas.

Instrucción SQL

Select * from maestros m where m.fecha >= '2010/10/21' and m.fecha <= '2010/10/24'

* El formato de la consulta dependerá del motor de base de datos. Lo importante es que se entienda el ejemplo.

Equivalencia Velneo

Para el ejemplo contamos con una tabla llamada "maestros" donde tenemos un campo fecha y un índice donde participe ese campo (esto es imprescindible para poder usar el objeto búsqueda de Velneo).

Primero necesitamos crear el objeto búsqueda, que quedaría de la siguiente manera:

busq1.png

Las dos variables locales del objeto búsqueda las vamos a inicializar con los valores que necesitemos antes de disparar este objeto. Para ello creamos un proceso como el siguiente: 

busq2.png

Vemos que cuando disparamos el objeto búsqueda, le estamos indicando que lo haga en 3er plano, por lo que se disparará en el servidor, retornando la lista encontrada al cliente. Esta manera es la más eficiente en términos de rendimiento.

Una vez que disparamos el objeto, dentro de la subrama estamos en la lista resultante. En este caso hemos añadido la lista resultante de la búsqueda a la salida del proceso para mostrarlo en pantalla, utilizando un control objeto.

busq3.png

Esta es la forma más sencilla y a la vez óptima en cuanto a rendimiento de realizar una búsqueda entre fechas en Velneo. 

Insert básico

En este ejemplo, vamos a ver como realizar una alta de ficha en una tabla. Suponiendo que tenemos una tabla de clientes, con un campo nombre y otro tipo. Podemos ver la estructura de la tabla en el primer ejemplo Select básico

Instrucción SQL

La consulta SQL típica más o menos sería así:

INSERT INTO clientes (nombre, tipo)

VALUES ( 'Antonio González', 2)

Equivalencia Velneo

El código tendría esta forma:

 

Podemos ver, a través de los comandos utilizados, que en primer lugar creamos la ficha en memoria, para modificar los campos. Por último realizamos el alta propiamente dicho.

Otras opciones

El anterior procedimiento, o similar, será el que utilicemos en Velneo para las altas de registros, por medio de código programado. El procedimiento habitual, mediante la introducción de datos por parte del usuario, es con Velneo mucho más sencillo. Debido a la integración entre la base de datos y los objetos visuales, el simple acto de aceptar un formulario de alta por parte del usuario, ya provoca la generación del nuevo registro de forma automática. Sin que tengamos que añadir ni una línea de código.

Las vistas de datos de SQL no son necesarias en Velneo

En SQL se suelen crear vistas de datos para mostrar información de tablas relacionadas.

En Velneo esto no es necesario ya que, por el mero hecho de crear en una tabla un enlace a otra, ya podemos mostrar en una rejilla por ejemplo cualquier campo de la tabla enlazada, o incluso campos de tablas enlazadas desde esa tabla enlazada. Veamos un ejemplo:

Supongamos que tenemos estas tres tablas enlazadas:

La tabla Líneas de pedidos de venta tiene un enlace a Artículos y Artículos, tiene un enlace a Familias.

En una rejilla de líneas de pedidos de venta podré mostrar el importe de la línea:

#IMP

El nombre del artículo:

#ART.NAME

O el nombre de la familia del artículo:

#ART.FAM.NAME

Como podemos ver, un simple enlace nos da acceso directo a la información de cualquier tabla enlazada.

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 6 de 6
¿Tiene más preguntas? Enviar una solicitud

0 Comentarios

El artículo está cerrado para comentarios.