Comodín * con LIKE

Dudas sobre código
JTrilloJ
Nivel 3
Reto05
Mensajes: 52
Registrado: Mar Dic 01, 2015 3:27 pm

Comodín * con LIKE

Mensajepor JTrilloJ » Sab Abr 30, 2016 4:35 pm

Intermitentemente: Con VBA
En algunas de mis BDS deja de funcionar o no funciona la búsqueda con el caracter comodín * en LIKE.
Si sustituyo * por % obtengo resultados.
En éste enlace pongo Ejemplo.
http://www.mediafire.com/download/o3snv ... omodin.rar
Alguno de vosotros puede ayudarme con esta duda. ¿Por qué pasa así?
Mis saludos y gracias anticipadas
Jacinto
PD.: Se me ha olvidado comentar >> Access 2010 32 bits
Última edición por JTrilloJ el Dom May 01, 2016 12:27 am, editado 1 vez en total.

Avatar de Usuario
Neckkito
Moderador
Mensajes: 772
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Comodín * con LIKE

Mensajepor Neckkito » Sab Abr 30, 2016 11:35 pm

Hola, Jacinto:

A ver cómo te lo explico... ;) Más que nada por darte una explicación lo más clara posible en vez de darte directamente la solución.

El lenguaje SQL se estabilizó según unos estándares hace ya unos cuantos años (en el 1986 según Wikipedia) según ANSI. Desde ese año ha ido sufriendo revisiones. En 1992, tras una importante revisión, apareció el denominado SQL2. Y de ahí ha seguido evolucionando. Esa evolución ha hecho que los estándares de años anteriores fueran volviéndose "incompatibles" con los más recientes.

¿Y para qué me suelta todo este rollo?, supongo que te preguntarás. Te lo suelto porque en SQL ANSI 92, si se quiere utilizar el operador LIKE, hay que sustituirlo por ALIKE. Y si lo sustituyes por ALIKE no puedes emplear comodines, porque no funcionan. Tienes que utilizar, como comodín, el símbolo del porcentaje (%). Como se "entremezcla" también la compatibilidad con SQL Server creo recordar que el carácter comodín de SQL Server es el % y no el asterisco, pero al no utilizar SQL Server no puedo asegurártelo.

¿Y qué pasa en tu base de datos? Pues que tu base de datos está configurada para ser compatible con SQL ANSI 92. Y cuando tu escribes LIKE automáticamente Access lo transforma en ALIKE (precisamente para poder ser compatible). Y ya hemos dicho que el comodín no funciona con ALIKE, pero sí el %

Y eso explica porqué te funciona uno y no otro.

¿Quieres que te funcione el comodín (lo que implica que Access no te hará la conversión para ser compatible con SQL ANSI 92)? Te doy los pasos a seguir en un Access 2013, que es el que ahora tengo a mano: sacas las opciones de la base de datos y te vas la opción "Diseñadores de objetos" - Epígrafe "Diseño de la consulta", y ahí le desmarcas el check que dice "Esta base de datos" bajo "Sintaxis compatible con SQL Server (ANSI 92)".

Con eso te debería funcionar el comodín. ;)

Saludos!
Access MVP 2017-2019
http://bit.ly/NckAccess

JTrilloJ
Nivel 3
Reto05
Mensajes: 52
Registrado: Mar Dic 01, 2015 3:27 pm

Re: Comodín * con LIKE

Mensajepor JTrilloJ » Dom May 01, 2016 12:00 am

Miquel: Gracias por tu explicación que realmente es sucinta y muy clarificadora.
De ese modo mi pregunta de >> ¿Por qué pasa así? queda contestada, porque es ANSI desde el 92 y yo sin enterarme.
A veces el humor ayuda a vivir.
De nuevo muchas gracias y ánimo para seguir en esa línea de ayuda.
Mis saludos
Jacinto


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado