26 Jul Cómo construir un índice tipo agenda
El objetivo de este mini-tutorial es construir en nuestro formulario principal unos «filtros» para que, al pulsar sobre una letra en particular, nos aparezcan en la vista de datos sólo los registros que comiencen por esa determinada letra: podemos usarlo para una agenda telefónica, artículos que comiencen por una letra, etc. Es lo que he denominado «índice tipo agenda«.
Vamos a ver como se construye…
Objetos necesarios en el proyecto de datos
Lo primero que tenemos que crear en la tabla en cuestión es un campo alfabético de longitud 1. Como soy un tío original… le he llamado LETRA y le pongo como contenido inicial lo siguiente: toUpper(left(#APELLIDO_1, 1))… vamos que coja la primera letra del apellido y me la transforme en mayúscula.
En este caso voy a «filtrar» los registros por la primera letra del apellido.
También voy a crear un índice de este campo para posteriormente poder buscar por él.
Objetos necesarios en el proyecto de aplicación
Aquí vamos a necesitar algunos objetos mas que en el proyecto de datos… pero no creas que tantos.
- En el formulario donde vayamos a insertar nuestro «índice» crearemos una variable local alfabética para guardar el valor de la letra pulsada… como sigo siendo original la voy a llamar «LETRA»
- Crearemos un manejador de evento por cada una de las letras que vayamos a poder pulsar en el formulario con el siguiente código:
En el primer ejemplo vamos el código necesario para la pulsación de la letra «A» y en el segundo el código necesario para la pulsación de la letra «B»…. para el resto igual cambiando el valor de la variable «LETRA»
- Tantos botones en el formulario como letras tengamos que pulsar. A cada botón se le asignará el manejador de evento correspondiente creado en el paso anterior y como nombre del botón le pondremos la letra a pulsar
- En la búsqueda que lanzaremos desde el manejador de evento «Refrescar» le añadiremos una variable local alfabética para pasarle el valor del botón pulsado ¿sabes como la he llamado?… pues si «LETRA». Además vamos a condicionar este componente para que no se lance si no hemos pulsado ninguna letra (se mostrarán por defecto todos los registros de la tabla)… Así lo condicionamos
- Por último en el manejador de evento «Refrescar» del formulario, le añadiremos al manejador de objeto que lanza la búsqueda del paso anterior la instrucción para pasarle el valor del botón pulsado: «Set variable local de objeto»
En el evento si no hemos introducido nada en el campo general para filtrar y hemos pulsado uno de los botones de las letras, le pasamos a la búsqueda el valor pulsado devolviéndonos la búsqueda los registros encontrados que comiencen por esa letra, añadiéndolos a una cesta en memoria para procesarlos posteriormente.
Esto es todo lo que tenemos que hacer para construir un índice tipo agenda en nuestras aplicaciones ¿te ha parecido complicado? ¿no? pues a que esperas para construir los tuyos
No Comments