¿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.

Carga de registros en Velneo V7

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
    Evento on init
  • 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
    Conexion 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:

Evento Refrescar

  • 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

Francisco José Vila Martín
ayudavelneo@ayudavelneo.com

Francisco José Vila es autor del blog Ayudavelneo desde donde ayuda a desarrolladores que se están iniciando en Velneo a acortar su curva de aprendizaje para que obtengan beneficios y sean rentables desde el minuto 1. Además es programador certificado y formador en la plataforma de desarrollo de aplicaciones empresariales Velneo V7. Ampliar información

7 Comments
  • veldevelop
    Posted at 18:45h, 11 julio Responder

    Como siempre la claridad en los ejemplos marca la diferencia. Gracias una vez más por tu tiempo.

  • Javi
    Posted at 07:39h, 12 julio Responder

    Gracias! 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 julio Responder

    Eso 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 julio Responder

    Hola 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 julio Responder

      Hola 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 septiembre Responder

    Hola, 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 septiembre Responder

      Muy 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

Post A Comment

Información básica sobre Protección de Datos: Responsable: Francisco José Vila Martín. Finalidad: Gestionar y moderar los comentarios. Legitimación: Tu consentimiento. Destinatarios: Tus datos se alojarán en los servidores de Web Empresa S.L. (UE). Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos, así como otros derechos, como se explica en la información adicional. Información adicional: Puedes consultar la información adicional y detallada sobre protección de datos personales en mi Política de Privacidad.

Pin It on Pinterest