Aprende a usar componentes de búsqueda

En 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 las búsquedas para cargar los datos en una rejilla.

Pues vamos a ello
APRENDE A USAR COMPONENTES DE BÚSQUEDA

Para empezar… ¿qué es un componente de búsqueda?

Un componente de búsqueda es un subobjeto del objeto búsqueda que permite definir tanto el índice o índices por los que se realizará la búsqueda como el modo en el que ésta será realizada.

Una vez que tenemos claro qué son los componentes de búsqueda, vamos a aprender a utilizarlos…

En la definición del componente hemos visto que es un subobjeto que permite definir el índice por el que se realizará la búsqueda… pues es obvio que previamente tendremos que crear esos índices en la tabla en cuestión.

Al crear el componente de búsqueda, tendremos que definir sus propiedades:

    • Identificador: (obligatorio) tendremos que indicarle el identificador del componente de búsqueda.
    • Nombre: (optativo) nombre descriptivo del componente.
    • Estilos: (optativo) en esta propiedad podemos marcar si el componente de búsqueda es privado o no.
    • Mezcla: (optativo) si añadimos más de un componente a la búsqueda, tendremos que definir como queremos que el componente que se esté ejecutando se “mezcle” con los registros devueltos por los componentes de búsqueda anteriores. Podemos seleccionar una de las tres opciones siguientes:

Cruzar: los registros devueltos por el componente de búsqueda, serán cruzados con los registros devueltos por el componente anterior y el resultado de la búsqueda será los registros que se encuentren en ambas listas.
Añadir: los registros devueltos por el componente de búsqueda, serán añadidos a los registros devueltos por el componente anterior y el resultado de la búsqueda será los registros resultantes de componentes anteriores más los registros devueltos por el componente actual.
Quitar: los registros devueltos por el componente de búsqueda, serán quitados de los registros devueltos por el componente anterior y el resultado de la búsqueda será los registros resultantes de componentes anteriores menos los registros devueltos por el componente actual.

    • Condición de activo: (optativo) en la condición de activo, podemos abrir el editor de fórmulas para indicar la condición según la cual se ejecutará el componente.
    • Grupo de índices: (obligatorio) tendremos a nuestra disposición dos opciones: “Normal” o “Complejos“.
    • Índice: (obligatorio) dependiendo del “Grupo de índices” seleccionado, en esta propiedad nos aparecerán los índices normales o complejos asociados a la tabla.
    • Modo: (obligatorio) en esta propiedad podemos seleccionar una de las tres opciones siguientes:

Todo el fichero: devolverá todos los registros de la lista ordenados según el índice seleccionado.
Parte izquierda: tendremos que indicar un valor para que el índice nos devuelva los registros iguales al valor indicado que se encuentren en la tabla indexados por el índice seleccionado
Entre límites: tendremos que indicar un valor inicial y otro final para que el índice nos devuelva los registros que se encuentren entre los valores seleccionados en la tabla indexados por el índice seleccionado.

Vamos con unos ejemplos.

Ejemplo 1: Devolver todos los registros de una tabla

Este es el ejemplo mas sencillo que nos vamos a encontrar. Queremos devolver todos los registros de una tabla (Hoteles) en una rejilla (o grid) ordenados por el campo nombre.

1.- Creando los índices

Vamos a crear automáticamente los índices por “Nombre”, “Palabras” y “Trozos” del campo “Name”.

Indices para componentes

2.- Creando la búsqueda y el componente de búsqueda

Una vez creados los índices, creamos el objeto búsqueda

Busqueda_Simple

al que le añadimos un subobjeto “Componente de búsqueda.”

Subobjeto componente

Como podéis ver en la imagen, he seleccionado las siguientes propiedades en el componente:

  • Grupo de índices: Normal
  • Indice: Name
  • Modo: Todo el fichero

Con esta configuración la búsqueda devolverá todos los registros de la tabla “Hoteles” que se encuentren indexados por el índice “Name”

3.- Lanzando la búsqueda desde una acción

Sólo nos faltará crear una acción para “disparar” la búsqueda e incluir dicha acción en una toolbar o menú para poder visualizar todos los registros de la tabla en cuestión. Como segundo objeto pondremos cualquier objeto de tipo lista de la tabla relacionada (en este caso un alternador)

Accion_Bus_Simple

Ejemplo 2: Búsqueda con componentes condicionados

Vamos a complicar un poco mas la búsqueda. En este ejemplo vamos a crear dos componentes de búsqueda y los vamos a condicionar. Además vamos a añadir a la búsqueda un “formulario de búsqueda” para poder introducir un texto.

En caso de introducir alguna palabra, se lanzará el componente de búsqueda por palabras, devolviendo los registros que en el campo nombre tengan dicha palabra. Si no introducimos ninguna palabra, se lanzará el componente de búsqueda anterior.

También vamos a necesitar crear en la búsqueda, un subobjeto variable para poder “pasarle” a la búsqueda el texto introducido en el formulario y poder condicionar los componentes… la vamos a llamar “NOM_BUS” y será de tipo alfabético.

Los índices a utilizar son los mismos que hemos creado para el ejemplo anterior.

Pues vamos a ello…

1.- Creando la búsqueda y los componentes de búsqueda

En este caso, como indicaba anteriormente, he creado una búsqueda con dos componentes:

Busqueda_condi

El primer componente tendrá las mismas propiedades que hemos visto en el componente de la búsqueda anterior. La única diferencia es que en la propiedad “Condición activo” le vamos a poner la siguiente fórmula: NOM_BUS = “”.

De esta forma conseguiremos que este componente se lance cuando el usuario no introduzca nada en el campo del formulario de búsqueda:

Compo_Bus_Name

En el segundo componente tendremos que indicar la propiedad “Mezcla” aunque en este ejemplo no se utilice puesto que al estar ambos componentes condicionados, o se lanza uno o se lanza el otro. Seleccionamos “Cruzar”.

Además al indicar en el índice que es por palabras (“Words”), nos pedirá que resolvamos la propiedad “Límite inicial”. En este caso le asignaremos el valor de la variable “NOM_BUS”:

Compo_Bus_Name_Sel

En la propiedad “Condición activo” le vamos a poner la siguiente fórmula: NOM_BUS ! “”. De esta forma, el componente se lanzará cuando el usuario haya introducido alguna palabra en el formulario de búsqueda.

2.- Creando el formulario de búsqueda

Creamos un formulario de la misma tabla asociada al objeto búsqueda. En el formulario marcamos la propiedad “Especial para búsquedas” como “Verdadero”.

Además creamos una variable local de tipo alfabético con el mismo identificador que la variable que hemos creado en la búsqueda. Al nombrarla igual, Velneo “induce” el valor de la variable del formulario a la búsqueda directamente.

Busqueda_Form

En el formulario creamos en “Control alfabético” y en el contenido le asignamos la variable “NOM_BUS”.

Para finalizar, en la búsqueda, tendremos que asignar en la propiedad “Formulario”, el formulario que acabamos de crear. De esta forma al lanzar la búsqueda se mostrará el formulario de búsqueda para dar la posibilidad al usuario de introducir alguna palabra. Si la introduce se lanzará el componente de búsqueda por palabras. Si no introduce nada devolverá toda la lista de registros.

3.- Lanzando la búsqueda desde una acción

Sólo nos faltará crear una acción para “disparar” la búsqueda e incluir dicha acción en una toolbar o menú para poder visualizar todos los registros de la tabla en cuestión. Como segundo objeto pondremos cualquier objeto de tipo lista de la tabla relacionada (en este caso un alternador).

También puedes verlo en vídeo

Si te ha parecido interesante este artículo… !Espera a ver el siguiente! Mientras tanto, puedes dejarme un comentario mas abajo.

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

1Comment

Post A Comment

Pin It on Pinterest