Módulo Colocar la función quitar acentos y mayúsculas en cuadros combinados o cuadros de Lista en Access para que los ignore.

Tengo el módulo MóduloSinAcentos funcionando en un cuadro combinados que utilizo para búsquedas, pero no se como aplicarlo a otros cuadros combinados o cuadros de lista que seleccionan registros o ejecutan una consulta comparativa.(Martín = Martin) o (MARTÍN = Martín) o (mArTin = mARTÍn)

Me es indispensable ya que estoy trabajando con tablas vinculadas en MySql y utilizo formularios de Access. Y el tratamiento indistinto de mayusculas y minusculas me seria muy util ya que con esta modalidad de trabajo me considera como distintos valores como CARLOS o Carlos lo cual trabajando con tablas en Access solamente no me sucedia.

¿Alguien me explica en forma sencilla como o donde debo poner el módulo?

(Gracias a Sveinbjorn El Rojo. Por el módulo)

Pd: El abecedario en mayusculas y minusculas se lo agregué yo.

Lo subi como imagen porque no me permitia mucho texto sin espacios. Muchas gracias.

1 respuesta

Respuesta
1

Vamos a ver, el módulo como es independiente, solo has de ponerlo una vez en tu BD, y la función, como es pública, solo has de definirla una vez y la puedes usar en toda tu aplicación.

Que le hayas añadido el alfabeto al final de las cadenas, además de desvirtuar la función, no te va a resolver el problema.

Si quieres comparar dos cadenas de texto escritas de diferente forma, la forma más sencilla sería convertir las dos a minúsculas o mayúsculas a la hora de hacer la comparación:

Ucase("Martin")=Ucase("MARTin") =Ucase("mARTIN")

Esas igualdades darán como resultado Verdadero, porque todos los lados de la igualdad "serán": MARTIN.

Obviamente lo puedes combinar con la función de quitar acentos:

LCase(fncQuitarAcentos("Martín"))=fncQuitarAcentos(Lcase("mARtÍn"))

Que también se evaluará como verdadero, porque quedarían ambos lados como: "martin" (como ves el orden en que apliques las funciones es indiferente).

En una SQL construida en VBA, sería, por ejemplo:

miSQL="SELECT * FROM tutabla WHERE LCase(fncQuitarAcentos(tuCampo))='" & LCase(fncQuitarAcentos(Me.tuControlDelFormulario)) & "'"

Una cosa: no habrás cambiado en algún encabezado de los módulos la forma de hacer las comparaciones, ¿no?

Porque según pongas:

Option Compare Binary

Option Compare Text

Option Compare Database

El comportamiento de la BD para comparar cadenas de texto es diferente... Y si no lo has cambiado, puedes probar a ver si alguna de las 3 opciones te soluciona el problema...

Hola. Estuve probando las soluciones que me proponés pero no logro el objetivo. Los cuadros combinados, las consultas, todo me considera diferente si escribo con mayúsculas o minúsculas cosa que no me sucedía nunca. ¿Dónde debería modificar lo que me sugieres?

Option Compare Binary

Option Compare Text

Option Compare Database

... ¿De tal manera que no haga nunca diferencias entre mayúsculas y minúsculas?

¿Existe algo publico que afecte a toda la base de datos? Te recuerdo que estoy trabajando en esta BD con un conector ODBC y las tablas Mysql en un Hosting

(Solo hice algo así con un filtro que me habías facilitado con anterioridad)

miFiltro = miFiltro & "'" & fncQuitarAcentos(UCase(Lista37.ItemData(Lista37.ItemsSelected.Item(i)))) & "',"

Y me funcionó.

Pero no sé como aplicarlo a cuadros combinados o cada vez que lo requiero.

Además me enlentece todo!

Por eso, si existe una configuración de Access donde indicarle que no haga tal diferencia sería lo ideal. Muchas gracias desde ya.

Como ya te dije en otra ocasión, si lo sabes hacer para un cuadro de texto, es lo mismo para uno combinado, solo has de tener en cuenta la columna con la que trabajas, si tiene más de una.

Además, como ya te dije, si usas UCase o Lcase, lo has de usar en los dos lados de la igualdad, no en uno solo.

MUCHAS Gracias!

Encontré esto para procurar una solución más generalizada y quisiera saber si lo podes ver aunque tengo claro que no sos experto en Mysql, pero seguramente vas a entender más que yo. Tal vez contribuya a salvaguardar problemas de compatibilidad o modos que operan cada programa. (Mysql & Access)

https://es.stackoverflow.com/questions/76942/b%C3%BAsqueda-insensible-a-may%C3%BAsculas-y-min%C3%BAsculas-collate-vs-binary

Agradezco cualquier respuesta, sugerencia, guía esperitual etc...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas