Menú Principal

Clics de vista de contenido : 55073

Filtradores Buscadores con texto enriquecido 2007

Artículo escrito y elaborado por Vicente Miralles (VIMIPAS)

 

Ambos filtradores están hechos con Access 2007 y se aprovecha la particularidad de los campos que pueden funcionar con Texto Enriquecido. Hasta 2007 no se pudo contar con ellos.

El texto enriquecido no es más que etiquetas en HTML.

Si queremos resaltar Pascual, de la cadena Ximo Pascual, tan solo habrá que poner:

Ximo Pascual

Todo lo que queda entre en el ejemplillo anterior, es lo que se denomina etiquetas de HTML

Destacar básicamente que ambos ejemplos se componen siempre, de:

1.- Un formulario (al que llamo VIMIPAS2).

Con un único campo, al que llamo BUSCO

2.- Un subformulario

Que es donde se ve lo que buscamos, debidamente resaltado.

Veamos como funcionan:

A.- Filtrador con Replace

Siguiendo con el ejemplo anterior (Ximo Pascual), como resaltaríamos ese registro:

El registro (estamos en el subformulario) contiene dos campos. Un campo es el que contiene el dato real, le llamo TXTNOMBRE y está en la parte izquierda del registro, con propiedad Visible=NO.

El otro campo, Texto41, es el que hace que se resalte, con esto que pongo en el origen de control de dicho campo:

=SiInm(Longitud(Nz([Formularios]![vimipas2]![busco]))=0;[TXTNOMBRE];Reemplazar([TXTNOMBRE];[Formularios]![vimipas2]![busco];"<u>" & "<font face=Rockwell Extra Bold color=#FF3030 >" & [Formularios]![VIMIPAS2]![busco] & "</u>" & "</font>"))

 

Si lo analizamos, como vemos es muy simple, cogemos lo que BUSCO (que está en el formulario VIMIPAS2) y lo reemplazo aquí de esta forma:

"<u>" & "<font face=Rockwell Extra Bold color=#FF3030 >" & [Formularios]![VIMIPAS2]![busco] & "</u>" & "</font>"

 

Como lo reemplazo ya directamente con las etiquetas, no hay más que hablar, directamente queda resaltado.

Sin embargo un pequeño inconveniente le veo yo a este Replace. Lo que sigue:

Tenemos en el registro: Ximo Pascual

Yo busco: pascual

Obtendremos esto: Ximo pascual (se reemplaza pero de la forma en que se ha escrito lo que se busca).  Evidentemente tan solo hay que fijarse como actúa la función Replace para entenderlo.

Solución, la hay, para hacerla también con Replace, pero la estoy estudiando y desarrollando para un ejemplo en 2010. Mientras llego a esa función, ya tengo eso hecho con otro sistema, es decir con la función que he desarrollado a lo largo de todos mis ejemplos de filtradores/buscadores y con ello consigo lo mismo que con el Replace, pero sin el Replace.

 

B.- Filtrador sin Replace

Se puede mirar en el ejemplo de “Buscador sin Replace”, precisamente se llama así y allí se puede apreciar la diferencia. Es la función que desarrollé la que explica mejor que yo como funciona.

Un poquitín de historia:

Cuando no habían campos con Texto  Enriquecido (hasta 2007 no aparecen), lo que me costó un montón (y fue en ese momento cuando lo conseguí) fue conseguir averiguar que había dos tipos de letra que se complementaban, monoespace (misma anchura en todas sus letras) y la madre del cordero llamada wst_swed.

Ponía dos controles (igual que ahora en 2007), pero uno encima del otro, usaba la técnica de enviar al fondo y traer al frente. ¿Cómo?

El control que traía al frente tenía el fondo transparente (ahí estaba la letra monoespaciada) y el que enviaba al fondo (ahí estaba la letra wst_swed) es el que se encargaba de resaltar lo que se buscaba, con la misma función que hay hoy en el ejemplo de Access 2007.

El principio es básico:

Si tengo un control (el de arriba, letra en negro) que lleva: Ximo Pascual

Busco: Pascual

Y la función rellena el control que hay bajo, de esta forma:

6 espacios (como los espacios son transparentes) para rellenar: Ximo y su espacio posterior y a continuación le añado 7 Chr(223) y el color de la letra es verde, asunto resuelto con el efecto que se consigue, aparece resaltado.

 

 

Saludos de Vicente

 

Buscador sin replace

 

Buscador con replace