|
Descargar
FiltrosCls.zip
Es muy frecuente tener un
formulario para filtrar otros formularios o
informes. Elegimos fecha, cliente, número de
albarán... y construimos con esos valores una
cadena de texto que nos va a servir de filtro;
además queremos tener la posibilidad de si no
ponemos nada, o si ponemos "Todo", en uno de
esos controles que no filtre por él. Es una
tarea que resulta difícil a muchos y al menos
laborioso a la mayoría; los distintos tipos de
datos, las dichosas comillas dentro de comillas,
hacen que a menudo se atraviese.
He construido dos clases para
facilitar esto. Una gestiona un control del
formulario y genera automáticamente un filtro en
el evento AfterUpdate; es necesaria una
instancia de esa clase para cada control que
vayamos a usar como origen del filtro. La otra
clase gestiona la fusión de los distintos
filtros simples en uno solo compuesto.
Una tercera clase,
clsEntreFechas,
ya estaba publicada pero la incluyo en la dll
porque se puede combinar perfectamente con las
demás.
Para usar esta utilidad habría
que hacer lo siguiente:
- Registrar la dll
- Incluirla entre las
referencias de la Base de Datos
- Dimensionar un objeto
clsFiltroMix
- Dimensionar tantos
objetos clsControlFilter como controles
vamos a usar
- Asignar a cada uno de
esos objetos propiedades como Nombre del
Campo, Nombre del Control al que nos
referimos o el FiltroMix en que se van a
mezclar (con éstas es suficiente)
Haciendo esto, cada vez que
modifiquemos el valor de uno de esos controles
en el formulario se modificará el cuadro de
texto que contiene el filtro complejo. Las
clases se encargan de gestionar, de manera
oculta, el formato para el tipo de dato, el tipo
de control, los eventos AfterUpdate de cada uno,
etc.
Hay más propiedades y más
posibilidades; por ejemplo, el hecho de poder de
trabajar con distintas instancias nos da la
posibilidad de que, con el mismo formulario y
los mismos controles, podamos obtener distintos
filtros al mismo tiempo para abrir distintos
objetos con el mismo formulario.
Llevo varios años trabajando
con esto y lo que he conseguido ahora es
simplificarlo y hacerlo más sencillo de usar, por
eso las posibilidades de la utilidad llegan
bastante más lejos de lo que me resulta fácil
explicar, de manera que tendré que hacerlo poco
a poco y en distintas entregas. De momento, aquí
va el primer ejemplo:
Descargar
FiltrosCls.zip
P.D. ¿Por qué una dll? Porque
quería preservar el código fuente de los módulos
de clases y no conseguí utilizar las clases
desde un archivo mde incluido en referencias.
|