24 Ene Vista de datos: el poder de Velneo al alcance de tus listas
Velneo se define como «Plataforma de desarrollo de aplicaciones empresariales». Al final el usuario quiere ver datos. Estos datos se muestran a través de listas de registros… y aquí es donde se muestra el poder de nuestro control vista de datos.
En post anteriores vimos como podíamos utilizar el control «vista de datos» para mostrar registros dentro de un menú o cómo optimizar la carga de registros en una vista de datos.
Hoy nos vamos a centrar en el propio control «vista de datos».
Según la definición de Velneo, la vista de datos es un:
Control de Contenedores que permite incluir dentro de un formulario una acción, desde la que podremos disparar objetos de vista de datos, como por ejemplo, rejilla, formulario, multivista, etc.
En esta definición aparecen dos de los conceptos fundamentales de Velneo:
- Concepto de flujo (ya vimos este concepto aquí).
- Concepto de abstracción o diferenciar el qué del cómo es decir, qué queremos mostrar (lista de registros) de cómo lo queremos mostrar (rejilla, formulario multivista, etc).
Vamos a ver como se aplican estos conceptos.
Crear la vista de datos en nuestro formulario
Hemos visto anteriormente, en la definición de la vista de datos, que éste es un control de los que podemos incluir dentro de un formulario.
Antes de crear los objetos necesarios para mostrar los registros, también deberemos tener en cuenta el flujo. Como ya sabemos, un formulario puede pertenecer a una tabla o ser un formulario sin origen. Por lo tanto deberemos tener en cuenta dónde nos encontramos y qué queremos mostrar.
Generalmente necesitaremos dos objetos para mostrar los registros en nuestra vista de datos:
- En la propiedad «Objeto 1» indicaremos qué queremos mostrar (en este caso los registros que devuelve una búsqueda), por lo tanto una lista de registros: n registros, 1 o ninguno, dependiendo de la búsqueda.
- En la propiedad «Objeto 2» le indicaremos cómo queremos mostrar esos registros. En este caso al ser la salida del «Objeto 1» una lista de registros, podemos seleccionar cualquier objeto de tipo lista de la tabla a la que hace referencia la búsqueda de dicho objeto.
Esta sería la manera mas sencilla de mostrar los registros de una tabla en una vista de datos… pero Velneo tiene sus peculiaridades.
Consejos antes de crear la vista de datos en nuestro formulario
Algunos consejos antes de crear vistas de datos a lo loco.
- Si tu aplicación va a ser heredada por otras, nunca vas a saber donde se van a utilizar tus formularios… por lo tanto cuidado con la carga de registros.
- Velneo carga todos los objetos incluidos en un formulario al crearlo. Es decir si tienes un formulario en el que muestras la ficha de un cliente y en ese formulario tienes un separador de pestañas en el que tienes los plurales de pedidos, albaranes y facturas de dicho cliente… todos esos datos, se cargarán al entrar en la ficha… por lo tanto cuidado con la carga de registros.
- Si tienes un formulario sin origen que actúa como menú y en dicho formulario cargas n vistas de datos con miles de registros y cada una de ellas se resuelve con una búsqueda de varios componentes, también se cargarán todos los registros al entrar al formulario… por lo tanto cuidado con la carga de registros.
- Siempre hemos dicho que las búsquedas (o procesos que cargan búsquedas), mejor resolverlas en tercer plano (es decir, en el servidor). Hay una salvedad. Si la búsqueda en cuestión es por un único componente, no vamos a notar diferencia de carga entre lanzarla en primer plano o lanzarla en tercer plano. Para todos los demás casos hay que lanzarlas siempre en el servidor.
- Siempre que podamos utilizaremos la señal «on-show» del formulario para cargar los registros en la vista de datos mediante un manejador de evento.
Espero que con estos simples consejos no tengáis ningún retardo a la hora de mostrar los registros al usuario.
Utilización del control vista de datos a través de ejemplos prácticos
Particularmente siempre he tenido una «guerra» con los usuarios de mis aplicaciones a la hora de mostrar los registros de un determinado módulo. Están (mal)acostumbrados a que a la hora de entrar, por ejemplo en el módulo de clientes (sirve cualquier otro módulo que se te ocurra) a ver la lista de TODOS los clientes…
- Si no ven la rejilla con datos… parece que no hay datos.
- Si al final vas a seleccionar uno en concreto… ¿para que mostrar todos?
- ¿no será mejor que selecciones primero el rango de los que quieran visualizar?
Como los caminos del Señor son infinitos, vamos a ver varios ejemplos con estas casuísticas.
1.- Mostrar en la vista de datos todos los registros de una tabla al entrar en el formulario que hace de menú.
Lo mas sencillo es hacerlo de la siguiente manera:
Hemos creado un proceso sin origen (ya que el formulario era sin origen) y con destino la lista de la tabla que queremos mostrar en la vista de datos.
Las instrucciones que tenemos en el proceso son:
- Cargar lista de la tabla por el índice que mas nos interese
- Añadir lista a la salida (el siguiente objeto en el flujo, recogerá la lista devuelta por el proceso).
Lo único que tendremos que hacer ahora es crear la vista de datos. Como «Objeto 1» pondremos este proceso, y como «Objeto 2» cualquiera de los de tipo lista de la tabla asociada. En este caso «Tareas»
2.- No mostrar en la vista de datos ningún registro de una tabla al entrar en el formulario que hace de menú.
Mi opción preferida… sólo mostramos registros cuando el usuario los seleccione.
En este caso, el proceso no vamos a necesitar igualmente… en el flujo, el «Objeto 2» de la vista de datos tiene que saber que mostrar. La única diferencia es que el proceso asociado no tendrá ninguna línea.
Parece increible pero si, en velneo tenemos procesos que no hacen absolutamente nada… por lo menos aparentemente.
De esta forma, al entrar en el menú no aparecerá ningún registros y será al pulsar sobre un botón cuando se lance la búsqueda que devolverá los registros a la vista de datos.
Tienes el ejemplo completo aquí.
3.- Mostrar en un subformulario de una ficha, un plural (sin optimizar)
En esta caso, ya vamos a estar situados en una ficha, por lo tanto tenemos que tener cuidado con el flujo a la hora de crear los objetos asociados a la vista de datos.
El montaje es similar a los casos anteriores.
Si recordáis, en uno de los consejos que hemos visto antes os decía que Velneo carga todos los objetos al entrar en este formulario. Por lo tanto los registros que existan en el plural «Desglose de horas» también se cargarán al entrar en la ficha… si tuviésemos 10 plurales mas (sin optimizar) también se cargarían y dependiendo del número de registros que tengamos en cada uno de ellos, es probable que la visualización de la ficha en cuestión se retarde… Y puede además que el usuario sólo quiera ver las «Horas presupuestadas».
En este caso, lo más sencillo es esto:
Lo primero es declarar el flujo del proceso, es decir de un origen ficha (de la tabla en la que nos encontremos) queremos mostrar una lista de la tabla destino.
La instrucción para conseguir esto en el proceso es:
- Cargar el plural que nos interese de la ficha
- Añadir lista a la salida (invertir lista es para que aparezcan los registros mas recientes al principio de la lista).
Este proceso será el «Objeto 1» de nuestra vista de datos y como «Objeto 2» podremos seleccionar cualquiera de tipo lista del plural en cuestión.
4.- Mostrar en un subformulario de una ficha, un plural (optimizado)
Vamos a realizar algún pequeño cambio para que este montaje esté optimizado y solamente se carguen los plurales al entrar en la pestaña en cuestión.
El flujo del proceso será el mismo… sólo que no le incluiremos ninguna instrucción. De esta forma al entrar en la ficha no se cargará el plural correspondiente.
Ahora tendremos que conseguir que al entrar en la pestaña del plural se carguen en la vista de datos los registros existentes.
Para ello crearemos un «Manejador de evento» en el formulario con las siguientes instrucciones:
Crearemos una cesta local de la tabla plural que hará de «puente» entre los registros que devuelva el plural y nuestra vista de datos (los registros encontrados se guardarán en dicha cesta).
Con la instrucción «Interfaz: Procesar» accederemos a nuestra vista de datos añadiéndole los registros devueltos por el plural y guardados temporalmente en nuestra cesta con la instrucción «Cesta: Agregar a la lista en curso».
Sólo nos faltará crear una «Conexión de evento» en el formulario con la señal «On-show» y disparar el manejador que acabamos de crear.
Con este montaje sólo se cargaran los datos de los distintos plurales al acceder a cada una de las pestañas.
Espero que a partir de ahora el control vista de datos ya no tenga ningún secreto para ti.
En un próximo artículo veremos todas las instrucciones de proceso que podemos utilizar con este control.
¿Alguna duda con respecto al control vista de datos? Si es así, déjame tu pregunta mas abajo en los comentarios.
Oscar Juárez
Posted at 10:04h, 25 eneroEnhorabuena, me encantan tus post, aunque muchas cosas ya sepa, en otras te refresca la memoria. AyudaAVelneo a hacer un blog interesante y no el que tiene.
Francisco José Vila Martín
Posted at 10:44h, 25 eneroHola Oscar:
Muchas gracias. Me alegra saber que el blog sirve de ayuda tanto a los que están empezando con la plataforma como a los que ya lleváis tiempo con ella.
En cuanto al blog de Velneo, cumple muy bien su cometido para el target al que se dirige.
Un saludo
Marco Rangel
Posted at 16:49h, 13 eneroHola, muy interesante tu explicación. Tengo una duda de si se puede hacer algo y en caso afirmativo, el cómo.
Tengo la pantalla de mi registro de factura (encabezado) en una pestaña de un separador de formularios tengo el detalle de la factura. Hasta ahí todo bien.
En otra pestaña tengo los vencimientos (plural), también hasta ahí todo bien, nada fuera de lo que has explicado. Ahora quisiera que en este mismo subformulario ver tambien los cobros, es decir los plurales del vencimiento. ¿Cómo puedo hacer esto si es posible?
Marco Rangel
Posted at 18:35h, 13 eneroMe respondo a mi mismo. Cree un proceso como entrada la ficha padre y como salida la tabla NIETA. El proceso esta vacío.
En el sub-formulario creo un manejador de evento cada que se hace clic en un item de la rejilla HIJA (aquí se puede usar algún otro evento dependiendo del efecto que se le quiera dar, para mi con esto me pareció suficiente).
En el evento ubico la ficha de la lista HIJA y cargo sus plurales, los mando a una cesta que posteriormente envío a vista NIETA.
Ejecuto, abro la factura, me voy a la pestaña de vencimientos, selecciono el vencimiento… Y VOILA!!!!! justo lo que quería!!!!
De igual manera voy a intentar con otros tipos de eventos para ver con cual queda mejor, pero la idea básica fue eso.
Francisco José Vila Martín
Posted at 09:02h, 14 eneroBuenos días Marco:
No me dio tiempo a responder. Me alegra saber que ha sido de tu ayuda.
Un saludo y gracias por pasarte por aquí