ene 11

Una de búsquedas por multiples claves

Posted in ejercicios, foro

Nuestro amigo Héctor González nos plantea una serie de dudas en este hilo del foro:

dudas-sobre-varias-funcionalidades

Y aprovecho este post para responder a la tercera de sus consultas con un poco mas de detalle.

Planteamiento:

¿Es posible realizar busquedas donde el indice pueda ser varios valores posibles?  ¿Algo como el INLIST o el EXIST en SQL?, hasta ahorita lo hemos resuelto con varias comparaciones OR. Queremos eralizar consultas como ¿Dame los movimientos contables de los clientes que se encuentran en una lista dada?

Solución:

Para solucionar este problema vamos a usar 2 Cestas, que ya podeis ir creando:

  • Una, para la tabla de clientes, en ella guardaremos los clientes de la lista.
  • Otra, para la tabla de movimientos, en ella guardaremos el resultado.
  • También necesitamos una búsqueda de movimientos de UN cliente, con un indice CLIENTE por parte izquierda

Muchos ya estareis imaginando el resultado, es muy sencillo.

Ahora que ya tenemos los clientes en la primera cesta, solo tenemos que crear un proceso, el origen de este proceso da igual, dependera de donde lo useis, pero no influye en el resultado.

En el proceso, “Procesamos la cesta de CLIENTES” y recorremos la lista en modo “solo lectura”, y en cada uno de los registros de los clientes, ejecutamos una “Busqueda” en la tabla “movimientos”.

Para cada registro de la cesta de clientes, asignamos el ID del cliente a una variable, y mediante las sentencias del “Manejador de objetos”, asignamos la variable a la búsqueda y ejecutamos la busqueda de movimientos de un cliente.

El resultado de esa búsqueda, lo agregamos a la otra cesta que habiamos definido, y vamos agregando todos las listas de movimientos a la “Cesta de MOVIMIENTOS” hasta finalizar la lista de clientes.

Una vez finalizada esa parte, ya solo nos queda ver el resultado, como:

“Procesamos la Cesta de MOVIMIENTOS” y “Añadir lista a la salida”

Ahora solo tienes que definir una ACCION que ejecute el proceso y retorne una rejilla para mostrar el resultado.

Como podreis imaginar, ¡yo tambien lo estoy imaginando!, y deberia funcionar. Pero, a estas horas, no tengo ganas de abrir vDevelop ni tiempo para probar si el resultado es correcto.

Pero aunque puedo haber olvidado algún detalle, lo importante es captar el concepto.

¿Lo pillas?

PDF Creator    Enviar artculo en formato PDF   
comments: 4 »