11 Jul ¿Cómo optimizar la carga de registros en Velneo V7 de una vista de datos en un formulario sin origen?
Esta semana está teniendo lugar el «Seminario básico Velneo V7» que he organizado dentro de las actividades del «Campus de verano AyudaVelneo 2013«. Quiero dar las gracias a los alumnos que han confiado en mi para ayudarles a avanzar en su formación.
Ademas de ver aspectos teóricos y prácticos, estamos intentando reflejar (tanto yo mismo como Jorge Hontoria que me está ayudando con el seminario) nuestra experiencia con la plataforma para mostrarles patrones correctos de programación en Velneo V7 que les ayuden en sus futuros desarrollos. Uno de ellos es «¿Cómo optimizar la carga de registros en Velneo V7?»
¿De dónde partimos?
Queremos conseguir que si el usuario introduce algo en el control de búsqueda (ver formulario mas abajo), la vista de datos nos devuelva los registros que coincidan con el texto introducido. Si no introduce nada… queremos que nos devuelva todos los registro de la tabla ordenados por nombre.
Objetos necesarios
Los objetos necesarios para conseguir nuestro objetivo serán:
- Un proceso para cargar la vista de datos. Este proceso tendrá como «Tabla Asociada»… ninguna y como destino la lista de proyectos (en este caso). El proceso no contendrá nada. Como suena… NADA.
- Un «Manejador de evento» On init con el siguiente código
- Obviamente un «Manejador de evento» Refrescar. (Veremos el código mas adelante)
- Una «Conexión de Evento» que lance el «Manejador de evento» On Init
- Un «Botón» que ejecute el «Manejador de evento» Refrescar
Patrones correctos de programación para optimizar la carga de registros en Velneo V7
Vamos a ver en detalle el «Manejador de evento» Refrescar para conseguir el objetivo que buscamos:
- Creamos una cesta local de la tabla que queremos mostrar en la vista de datos
- Comprobamos si hay algún valor en el campo de búsqueda del formulario
- Si está vacío el campo (entramos por el IF)… creamos un «Manejador de objeto» de la búsqueda que tenemos definida en la tabla por nombre.
- Disparamos el objeto EN TERCER PLANO… Esto es muy importante para que la búsqueda se realice en el servidor.
- Si la búsqueda ha encontrado algún registro… con el comando «Cesta: Agregar lista a la cesta» los depositamos en la cesta creada anteriormente para mostrarlos posteriormente en la vista de datos
- Si el campo de búsqueda tenía algún valor (entramos por el ELSE)… creamos un «Manejador de objeto» de la búsqueda que tenemos definida en la tabla por palabras
- Con la instrucción «Set variable local de objeto» le pasamos a la búsqueda el valor introducido por el usuario (tendremos que tener en dicha búsqueda una variable del mismo tipo que el valor introducido así como un componente de búsqueda cuyo límite inicial será esta variable)
- Disparamos el objeto EN TERCER PLANO… Vuelvo a repetir: Esto es muy importante para que la búsqueda se realice en el servidor.
- Si la búsqueda ha encontrado algún registro… con el comando «Cesta: Agregar lista a la cesta» los depositamos en la cesta creada anteriormente para mostrarlos posteriormente en la vista de datos
- Procesamos la vista de datos con la instrucción «Interfaz: procesar
- Con la instrucción «Cortar lista» nos aseguramos que no haya ningún registro en la lista destino
- Por último, con la instrucción «Cesta: Agregar a la lista en curso» le pasamos a la vista de datos los registros devueltos por cualquiera de las dos búsquedas
Con este montaje nos aseguraríamos de que las distintas búsquedas se lanzasen en el servidor y tendríamos optimizada la carga de registros en Velneo V7
¿Te ha parecido interesante el artículo? Déjame tus impresiones
veldevelop
Posted at 18:45h, 11 julioComo siempre la claridad en los ejemplos marca la diferencia. Gracias una vez más por tu tiempo.
Javi
Posted at 07:39h, 12 julioGracias! Ojala vayamos asentando conocimientos con tu ayuda y la de otra gente totalmente dispuesta. Saludos.
Francisco José Vila Martín
Posted at 15:54h, 12 julioEso intento ser claro para que los que estáis empezando le perdáis el miedo a la plataforma… Recordad siempre donde estáis (ficha, lista o sin origen) y que queréis conseguir (ficha, lista o nada): Flujo
Paco Satué
Posted at 16:59h, 12 julioHola Francisco.
Enhorabuena por este blog. Espero que tengas muchas satisfacciones con él.
Quiero destacar la orientación que estás dando al blog, con contenido teórico-técnico y mostrando siempre código.
Los programadores de toda la vida te lo agradecemos.
Bueno, ahora una aclaración de concepto, por favor:
En la Vista de Datos asignas como primer objeto del flujo de ejecución un Proceso sin Origen. Esto lo haces así porque el formulario no tiene Tabla asociada, pues de lo contrario no podrías seleccionar dicho Proceso para la Vista de Datos porque no coincidirían los orígenes. En este caso el Proceso sin Origen únicamete establece como salida la tabla Proyectos para que a su vez se pueda seleccionar la Rejilla de Proyectos en la Vista de Datos.
He visto en otros proyectos unos Procesos Vacíos que tienen como entrada la Ficha del Formulairo y como salida la Tabla correspondiente a dicha Ficha.
En resumen, estos Procesos Vacíos serían un tipo especial de Proceso que únicamente cambian un, llamémoslo, «Puntero o Handle» de tal manera que el siguiente Objeto en el flujo sabe a qué ficha o tabla referirse como entrada.
¿Es correcto?
Gracias y un saludo
Paco Satué
Francisco José Vila Martín
Posted at 10:55h, 15 julioHola Paco:
Primero muchas gracias por unirte a esta «familia». En el blog siempre mostraré ejemplos prácticos del tema tratado en los artículos.
En cuanto a tu duda, efectivamente es como dices. Hay que dominar bien el flujo para utilizar en cada momento el objeto adecuado a cada circunstancia.
Siempre hay que tener presente donde estoy (ficha, lista o sin origen) y que es lo que quiero devolver (una ficha, una lista o nada).
Un saludo
Leonardo Velazauez
Posted at 01:11h, 11 septiembreHola, muchas gracias por todos tus articulos tan formativos… me funciono a la perfeccion….!
ahora que pasa si necesito buscar por 2 parametros ?? como creo el objeto busqueda ? debo crear un indice por los campos a buscar ??
Francisco José Vila
Posted at 09:09h, 11 septiembreMuy buenas Leonardo:
Gracias por participar en el blog.
En cuanto a tu duda, este montaje es óptimo cuando SOLO tenemos un componente de búsqueda. Si necesitásemos buscar por varios campos, necesitarías un proceso intermedio que lanzaríamos en tercer plano. Este proceso sería el que lanzase las búsquedas por varios componentes.
Tienes un ejemplo en https://ayudavelneo.com/optimiza-tus-aplicaciones-lanzando-las-busquedas-en-tercer-plano/
Un saludo