Optimiza tus aplicaciones lanzando las búsquedas en tercer plano

¿Tus aplicaciones son lentas a la hora de mostrar los registros en una rejilla? ¿Le da tiempo al usuario a tomarse un café mientras aparecen los datos solicitados en pantalla? !Tranquilo! Esto se ha terminado. En este artículo vamos a ver como lanzando las búsquedas en tercer plano al usuario no le dará tiempo ni a pestañear.

3.2.1 ¡Comenzamos!…

Antes de comenzar con el desarrollo, vamos a ponernos en situación:

Queremos, desde un menú tipo formulario, lanzar una búsqueda pasándole una serie de valores que el usuario elegirá desde un panel.

Algo mas o menos como esto:

Búsquedas en tercer plano

Objetos necesarios para lanzar las búsquedas en tercer plano

Para ejecutar correctamente la búsqueda en tercer plano necesitaremos los siguientes objetos:

  • Un “Manejador de evento” en el formulario que se lanzará al pulsar el botón de “Buscar registros”
  • Un “Proceso” que lanzaremos desde el evento anterior en tercer plano. Este proceso será el encargado de lanzar la búsqueda que queremos ejecutar
  • Una “Búsqueda” que será la encargada de devolver los registros al formulario principal
  • Crear los “Índices” necesarios en la tabla.

Bueno pues ya tenemos los ingredientes para cocinar nuestro plato. Vamos a ponerlos a fuego lento… Vamos a comenzar por el final

Creando la búsqueda/s

Yo en este panel lanzo dos búsquedas distintas. Una por “ID” si no hay ningún carácter en la variable “Introduzca texto a buscar” y otra distinta por “PALABRAS” si hay algo en esa variable. Como habréis adivinado… las dos búsquedas son casi idénticas. En la segunda se busca por “PARTES” del nombre la cadena introducida en la variable.

Para no complicarlo mucho vamos a ver la búsqueda por ID:

busqueda3p_partes

Como podéis ver en la imagen he creado una serie de componentes de búsqueda condicionados. Además he creado las variables locales necesarias para condicionar esos componentes de búsqueda.

El valor para esas variables se lo pasaremos desde el proceso que ejecutaremos en tercer plano.

Creando el proceso que ejecutaremos en tercer plano

En el proceso a ejecutar en tercer plano, recibiremos los valores de la selección que haya realizado el usuario en el formulario y mediante un manejador de objeto, se los pasaremos a la búsqueda. Como el proceso ya se está ejecutando en tercer plano (es decir, en el servidor), la búsqueda se lanzará también en tercer plano.

Vamos a ver cómo es el proceso:

Proceso para búsquedas en tercer plano

Si os fijáis, lo primero que hago es ver si a variable “TEXTO_BUSQUEDA” tiene algún valor. Si no lo tiene creo un “Manejador de objeto” de la búsqueda de vencimientos por ID. Si lo tiene creo un Manejador de objeto” de la búsqueda de vencimientos por PALABRAS.

En ambos casos le voy pasando los valores a la búsqueda con la instrucción “Set variable local de objeto“.

Por último, disparo el objeto y añado la lista a la salida.

Creando el manejador de evento en el formulario

Para cerrar el círculo vamos a ver que contiene el manejador de evento del formulario desde el que lanzamos el proceso en tercer plano.

Aquí también lo tengo dividido en dos partes: una por si no tengo activada la búsqueda avanzada y otra parte por si la tengo activada.

Creo una cesta local de vencimientos que es donde el proceso en tercer plano dejará los registros devueltos por la búsqueda.

Inicializo las variables necesarias que utilizaré durante el proceso y dependiendo del tipo de búsqueda que quiero, lanzo un manejador de objeto u otro (depende de los valores que le vamos a pasar al proceso en tercer plano). Esto se puede simplificar ejecutando un sólo manejador de objeto del proceso pasando todas las variables (las variables que no vayamos a utilizar las pasaremos vacías)

Este es el código para la búsqueda simple:

Búsqueda 3p simple

Lo importante es que al disparar el objeto, lo hagamos en tercer plano para que se ejecute en el servidor. Después con la instrucción “Cesta: Agregar lista a la cesta“, dejaremos en la cesta local los registros devueltos por la búsqueda a través del proceso en tercer plano.

y este es el código para la búsqueda avanzada:

busqueda3p_avan

Mismo esquema que en la búsqueda simple. Inicializamos valores de las variables y se las pasamos al proceso en tercer plano.

Para finalizar las instrucciones del manejador de evento, tendremos que pasarle a la vista de datos del formulario los registros devueltos por la búsqueda. Para ello el código es:

Procesar búsquedas en tercer plano

Procesamos el control que tengamos en la vista de datos,
cortamos la lista desde la posición 0 (para asegurarnos de que no quedan registros en la lista) y con la instrucción “Cesta: Agregar a la lista en curso“, le pasamos a la vista de datos los registros que había devuelto la búsqueda y que teníamos a buen recaudo en la cesta local.

Con esto, tus búsquedas volaran. ¿Qué te ha parecido el artículo? Déjame un comentario mas abajo y por favor, si te ha parecido interesante compártelo en tus redes sociales.

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

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

10 Comments
  • ¿Sabes como sincronizar vistas de datos en un formulario sin origen?
    Posted at 15:25h, 13 Febrero Responder

    […] Para mostrar los registros de la primera vista de datos… nada nuevo. Un proceso con origen ninguno y destino la lista de proyectos… sin ninguna instrucción. Recordad que la carga se realiza en el manejador de evento “Refrescar” (puedes ver un ejemplo de un proceso similar en este post). […]

  • Oscar B.
    Posted at 11:57h, 10 Marzo Responder

    Hola Francisco,

    Gracias por la aportación, pero lo he probado y en tercer plano no funciona, pero si lo disparo en primer plano funciona perfectamente.

    Oscar.

    • Francisco José Vila Martín
      Posted at 12:03h, 10 Marzo Responder

      Hola Oscar:

      ¿El qué no te funciona exactamente en tercer plano? Te puedo asegurar que este montaje funciona perfectamente en tercer plano… mas que nada porque lo uso en todas las búsquedas.

      Si puedes especificar lo que no te funciona, quizá te pueda echar una mano.

      Un saludo y gracias por seguir mi blog

  • Aprende a utilizar la potencia de los índices complejos en Velneo V7
    Posted at 14:11h, 20 Marzo Responder

    […] Tengo una búsqueda con varios componentes condicionados en función de las variables que llegan a dicha búsqueda desde el formulario principal (recordad que para ejecutar la búsqueda en 3er plano y que sea óptima, necesitamos un proceso intermedio). […]

  • Juan Infante
    Posted at 07:14h, 04 Febrero Responder

    Francisco, puedes detallar un poco el tema de las busquedas y de los componentes de busqueda y su utilizacion para cargar una rejilla. Gracias

    • Francisco José Vila Martín
      Posted at 17:35h, 17 Marzo Responder

      Hola Juan:

      Estoy preparando un post con el tema de los componentes de búsqueda. en cuanto lo tenga lo publico.

      Con el tema de life is soft y un par de cursos que me han salido he andado bastante liado

      Un saludo y gracias por seguir mi blog

  • Zenon Burgos
    Posted at 16:49h, 17 Marzo Responder

    Hola José, en tu video ¿Cómo
    optimizar las búsquedas en Velneo V7? cómo es que puedes disparar el
    objeto en 3º plano? porque a mi me sale “no aplicable”, te agradeceré me
    puedas ayudar

    • Francisco José Vila Martín
      Posted at 17:34h, 17 Marzo Responder

      Muy buenas:

      Tengo que actualizar este post. En versiones anteriores te dejaba seleccionar el tercer plano en búsquedas (aunque luego las lanzase en primer plano). Ahora necesitamos un proceso que se lance en tercer plano desde el que se dispara la búsqueda a través de un manejador.

      Muchas gracias por darte una vuelta por mi blog..

      Un saludo

  • ¿Sabes utilizar los componentes de búsqueda? Aprende ya
    Posted at 22:55h, 06 Abril Responder

    […] este artículo “Optimiza tus aplicaciones con búsquedas en tercer plano“, Juan Infante me pedía si podía detallar la utilización de los componentes de búsqueda y […]

  • Mat
    Posted at 19:05h, 02 Junio Responder

    Podrias subir un .vin del ejemplo? hay partes que no termino de entender

Post A Comment