Panel de búsquedas avanzadas en formulario principal

En éste artículo vimos como integrar una búsqueda avanzada, en un formulario sin origen, para poder seleccionar registros de una vista de datos contenida en dicho formulario. Ahora vamos a ir un paso más allá y vamos a ver como podemos  integrar dicha búsqueda en el formulario principal para que sea mas simple  en código.

Lo que queremos conseguir es poder buscar registros que cumplan una serie de criterios utilizando campos de la propia tabla para no tener que utilizar variables globales… Un ejemplo de lo que queremos conseguir es este

Búsqueda avanzada

¿Qué necesitamos para integrar las búsquedas avanzadas?

La primera diferencia entre el anterior artículo y éste es que en el anterior partíamos de un formulario sin origen y en este debemos partir de un formulario con origen.

Lo primero que vamos a hacer es crear una tabla en memoria (yo la he llamado “Filtros”) en la que crearemos un enlace a la tabla que visualizaremos en la vista de datos contenida en el formulario principal (en mi caso “Tareas”) y además crearemos enlaces a las tablas maestras por las que queremos realizar la búsqueda en tareas (en el caso del ejemplo: “Proyectos”, “Contextos”, “Áreas”) así como a las tablas estáticas necesarias (“Prioridad”, “Estado”, “Energía”, “Tiempo”, etc..).

El siguiente paso es crearnos un proceso sin origen con destino nuestra maravillosa tabla de filtros:

Filtro busqueda

A continuación nos crearemos el formulario en el que mostraremos tanto los campos de búsqueda como la vista de datos. La única particularidad es que en lugar de ser sin origen, tendrá como tabla asociada… ¿adivináis cuál?… pues si nuestra tabla en memoria.

Cargando datos en el formulario

Vale ya hemos creado nuestro formulario para poder buscar datos pero es de una tabla que no tiene nada que ver con la tabla en la que nosotros queremos buscar. Vamos a solucionar este pequeño problema creando un proceso vacío para alimentar nuestra vista de datos. El proceso será de origen ficha de la tabla en memoria y como destino será la lista de la tabla en la cual queramos realizar la búsqueda.
Busqueda proceso

Realizando la búsqueda

Ya tenemos prácticamente todo montado. Sólo nos falta que al pulsar el botón de búsqueda la vista de datos nos devuelva los registros que cumplan el criterio que hayamos definido en los campos de búsqueda.

Vamos a crear un “Manejador de evento” en el formulario principal. Como tengo una imaginación desbordante lo ha llamado “Buscar”. Dentro del manejador de evento crearemos un manejador de objeto llamando a una búsqueda de la tabla de la que queramos conseguir los registros para mostrarlos en la vista de datos. Esa búsqueda la alimentaremos con los datos seleccionados en la búsqueda (en el siguiente paso veremos como construir la búsqueda). Este es el código del manejador:

Busqueda manejador

Por último vamos a crear la búsqueda a la que llamaremos desde el manejador de evento. En la búsqueda crearemos tantos componentes como campos los los que queramos buscar.

En la búsqueda lo único que voy haciendo es añadir y cruzar los componentes. También deberemos crear las variables para pasarles los valores desde el manejador de objeto ¡¡ ojo con los tipos de la variables !!.

Una cosa importante: los componentes de búsqueda los voy condicionando. Si en el formulario de búsqueda no han seleccionado nada en un campo no tiene sentido que busquemos por ese campo (de eso se encargan los “Set variable local de objeto” del manejador creado en el formulario.

¿Te ha parecido interesante? ¿Tienes alguna duda? Déjame un comentario y recuerda compartirlo entre tus contactos.

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 V7 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. <a href="http://ayudavelneo.com/contacto/"Ampliar información

1Comment

Post A Comment

Pin It on Pinterest