ene 8

Búsquedas en 3 plano

Escribo este artículo, para aclarar aún más, si es que se puede, lo que ha descrito bastante bien nuestro amigo Fran Varona en este hilo del foro: Cargar lista Vs. Búsqueda

Una discusión que ha dado muchos quebraderos de cabeza y que por fin se desvela.

Para cada tabla, tenemos una búsqueda, en la que aprovechamos para usar varios indices y así, no tener que definir múltiples búsquedas:

Y en esa búsqueda hemos definido unas variables y unos componentes de búsqueda, para realizar búsquedas complejas.

Si os habéis fijado bien en vBase, veréis que en cada una de las opciones del menú, tenemos un formulario con un alternador, y desde un manejador de evento BUS, se llama a la búsqueda mediante el manejador de objetos:

En el evento, creamos un Manejador de objetos para llamar a la búsqueda y le pasamos los valores a las variables locales, antes de Disparar el objeto. Así, la búsqueda retorna una lista de registros con aquellos que cumplen las condiciones establecidas por las variables.

Tal y como se indica en el foro, las búsquedas siempre se ejecutan en 3º plano, pero esta afirmación solo es válida en aquellos casos en que las búsqueda se realiza por un solo índice, ya que cuando intervienen varios índices para obtener un resultado, las operaciones de Añadir, Cruzar y Quitar se realizan en 1º plano. Esto significa que el rendimiento baja considerablemente en la medida en la que aumenta el número de registros de la tabla en cuestión.

La solución a este problema, es sencilla, crear un proceso para llamar a la búsqueda:

El proceso debe cumplir unas reglas básicas:

  1. El proceso, como destino, debe ser de tipo Lista y para la misma tabla que la búsqueda a ejecutar.
  2. Tener las mismas variables definidas que la búsqueda a ejecutar, y para mayor sencillez, llamamos a las variables exactamente igual que en la búsqueda, de echo, podemos copiarlas.
  3. Creamos un manejador de objetos para llamar a la búsqueda, le pasamos todas las variables, y al finalizar retornamos la lista a la salida.

Ahora ya solo tenemos que crear el manejador de evento en el formulario principal, para llamar al proceso en 3º plano (en vez de a la búsqueda), asegurándonos así, de que esta vez si, la búsqueda se ejecutará en 3º plano y las operaciones de Añadir, Cruzar y Quitar, también.

Pero en este mismo hilo del foro se extiende la pregunta sobre la optimización de este tema, cuando además debemos usar búsquedas con formulario, pero este tema, lo dejare como ejercicio para otra ocasión, aunque la idea ya esta en el aire.

¿Tengo que repetirlo?

Pues vale, lo repito:

Antes de ejecutar el manejador de objetos que dispara el proceso en 3º plano, debemos pedir el formulario para introducir los valores por el usuario, y luego, pasar esos valores al proceso.

PDF Creator    Enviar artculo en formato PDF   
comments: 1 »