por - uso de la sentencia like en sql
El uso de Like*funciona en MS-Access pero no en VBA (3)
Tengo una consulta simple pero estoy teniendo problemas al usar "Me gusta" en VBA. Mi cadena SQL en VBA es: stsql1 = "Seleccionar los 25 principales datos. * De los datos donde data.Description Like (''*'')"
Cuando ejecuto esta cadena sql en mi código VBA no obtengo registros devueltos, pero si copio / pego la misma cadena en una consulta en SQL View en MS Access, la consulta devuelve los valores que espero. ¿Hay algún truco para usar la sintaxis "Me gusta" en VBA?
Puedo proporcionar código adicional y una pequeña versión de la base de datos si eso ayuda.
En ADO / VBA, debe usar% en lugar de * como comodín. Me encontré con esto un par de veces en el pasado ...
Para SQL, el motor de base de datos aceptará comillas simples o dobles como delimitadores de texto. Entonces, cualquiera de estas 2 cláusulas WHERE
funcionará.
WHERE some_field Like ''*''
WHERE some_field Like "*"
Sin embargo, VBA solo acepta comillas dobles como delimitadores de texto, por lo que debería usar el segundo formulario.
Otros dos puntos sobre su declaración SELECT
:
Select Top 25 data.* from data where data.Description Like (''*'')
-
TOP [number]
es arbitrario sin una cláusulaORDER BY
- No necesita paréntesis que rodeen su patrón Me
Like
... puede usarLike "*"
Si su código VBA está utilizando ADO con esa instrucción SELECT
, debe cambiar el carácter comodín de *
a %
...
WHERE data.Description Like ''%''
Tenga en cuenta que hay al menos 2 (¡sí dos!) Operadores LIKE aquí.
Uno es el operador LIKE de VBA.
El otro es el operador LIKE del SQL de la base de datos a la que está conectado.
Los comodines habituales en SQL son% (para cualquier número de caracteres) y _ (para cualquier personaje).
También sepa que MS Access puede abrir bases de datos que no son de acceso; podría ser Microsoft SQL Server, o Oracle o IBM DB2. (Por cierto, la base de datos que es normal para Access se llama Microsoft JET). Puede estar protegido de esa verdad cuando crea un objeto Query en Access; en ese caso, está usando JET SQL incluso cuando se trata de una tabla vinculada que está consultando .
Sin embargo, en VBA, cuando usa DAO o ADO, está hablando directamente con lo que sea que sea el sistema de la base de datos, en cuyo caso DEBE usar el SQL de ese sistema específico.
OK, respuesta corta: use% como dijo cularis.