visual validacion uso unir todos tipos tabla studio sintaxis significado reglas registros que por muestra misma los iniciales funcion errores error ejemplos consultas consulta con compilacion comandos codigos code buscar sql ms-access vb6

sql - validacion - Consulta de MS Access: ¿por qué LIKE se comporta de manera diferente cuando se le llama desde la aplicación VB6?



visual studio code no muestra errores (6)

No hago mucha codificación con VB6, pero ahora estoy actualizando una aplicación existente y acabo de encontrar un inconveniente.

Resolví el problema. En VB6, las consultas deben usar % wild card cuando se usa LIKE , pero en MS Access, debe usar el comodín *****.

Estoy consultando la misma base de datos - (está en MS Access).

Al realizar consultas desde MS Access, la siguiente consulta funciona:

SELECT * FROM table WHERE field LIKE ''*something*''

cuando construyo esa consulta en VB6, tengo que hacer esto:

SELECT * FROM table WHERE field LIKE ''%something%''

¿Qué esta pasando? ¿Eso es normal?


Access solía tener su propia versión incompatible de SQL, así que creo que usa el * por razones heredadas.

Cuando usas VB6 usas generalmente ODBC y un SQL más estandarizado, por lo que se aplican los comodines más comunes. Recuerde que a VB6 no le importa qué DB utiliza, por lo tanto, si utilizó otra cosa (por ejemplo, el servidor SQL), probablemente solo comprendería los signos de porcentaje.

Supongo que el conector Access-ODBC convierte las cosas para usted.



No sé si esto se aplica a VB6, pero dentro de Access, puede usar

ALIKE ''% something%''

y el% de caracteres se tratarán como comodines independientemente de si está utilizando VBA con DAO o ADO, o si está creando una consulta en el editor de consultas.


Nunca he visto el carácter de asterisco utilizado como un comodín para una declaración similar (en cualquier otro lugar). En términos generales, el signo de porcentaje es lo que necesitarías usar.


Sí, eso es normal.

Creo que es la diferencia entre DAO (lo que Access usa internamente) y ADO (lo que VB6 usa para hablar con Access).


Sí, puede salirse con ALIKE en una consulta Jet 4.0 OLE DB (es decir, desde VB6 usando ADO):

JeTTY version 0.5.68 >open booksale.mdb; #Opened database booksale.mdb (Jet3X "97") >select * from authors where author like "ba*"; #No rows to display >select * from authors where author like "ba%"; Page 1 of 1 Au_ID Author Year Born ───── ────────── ───────── 10 Bard, Dick 1941 >select * from authors where author alike "ba%"; Page 1 of 1 Au_ID Author Year Born ───── ────────── ───────── 10 Bard, Dick 1941 >

Por supuesto, usted gana compatibilidad con Access pero luego pierde compatibilidad con ANSI SQL-92 para realizar una conversión posterior a SQL Server, etc. y finalmente hace más trabajo para usted.