Access frente a ASP


Ejemplo 1:
Es un error muy común utilizar el comodín * que usa Access en consultas en el lenguaje ASP. 
Access utiliza * como comodín para sustituir múltiples caracteres mientras que ASP utiliza %. En el caso de sustitución de un carácter, Access utiliza ?, mientras que ASP _

Resumen:
Access: *, ?
ASP: %, _


He aquí varios ejemplos:

SELECT * from Clientes where Ciudad LIKE "N*"
Funciona en Access,  produce un error en ASP.

SELECT * from Clientes where Ciudad LIKE "N%"
Funciona bien en ASP.

SELECT * from Clientes where phrase LIKE "N?w"
Funciona en Access, produce un error en ASP.

SELECT * from Clientes where phrase LIKE "N_w"
Funciona bien en ASP.

 

Ejemplo 2: ¿Son los nombres de campo un problema?

a. Nombres prohibidos.
No le pongas como nombre "date" a un campo:

Una query como esta:
Select * from empleados where date=#1/17/98#
no funcionará porque "date" es un nombre restringido.

Renombra el campo para que la query quede como:
Select * from empleados where hiredate=#1/17/98#


b. Campos de nombre con espacios.
Un nombre de campo con espacios creará problemas si no lo pones entre corchetes.

Una consulta como:
select * from empleados where estado de residencia='MD'
no funcionará aunque sea sintácticamente correcta porque "state of residence" es un campo con espacios

Una consulta como:
select * from empleados where [estado de residencia]='MD'
sí funcionará porque el campo ha sido delimitado por corchetes



Ejemplo 3: Errores comunes.
a. Los campos de textos vienen delimitados por ' ', cosa que no ocurre con los numéricos.

Una query como:
select * from empleados where Ciudad=Rockville and Estado=MD and mesesderesidencia>9
no funcionará porque the text fields were not delimited properly.

Una query como:
select * from empleados where Ciudad='Rockville' and Estado='MD' and mesesderesidencia>9
sí funcionará.


b. Encierra las fechas con los delimitadores: # #
Una query como:
select * from empleados where birthdate>1/1/1966
no funcionará porque los campos de fecha no están delimitados correctamente.

Una query como:
select * from empleados where birthdate>#1/1/1966#
sí funcionará bien.