| | Información de productos Ayuda y procedimientos Formación Plantillas Soporte y comentarios Recursos técnicos Recursos adicionales |
Modo de consulta ANSI SQL (MDB)
Nota La información recogida en este tema sólo se aplicará a bases de datos de Microsoft Access (.mdb). Es posible que parte del contenido de este tema no pueda aplicarse a algunos idiomas. Puede crear consultas SQL en uno de los dos modos de consulta SQL ANSI (modo de consulta ANSI SQL: uno de los dos tipos de sintaxis SQL: ANSI-89 SQL (también denominado Microsoft Jet SQL y ANSI SQL), que es la sintaxis Jet SQL tradicional; y ANSI-92 SQL, que tiene palabras reservadas, reglas de sintaxis y caracteres comodín nuevos y diferentes.):
- ANSI-89 describe la sintaxis de SQL Jet (motor de base de datos Microsoft Jet: parte del sistema de base de datos de Access que recupera y almacena datos en las bases de datos de usuario y del sistema. Se puede decir que es un administrador de datos sobre el que se construyen sistemas de bases de datos, como Access.) tradicional. Este modo se ajusta a la especificación ANSI-89 Nivel 1, pero no es compatible con ANSI-89 Nivel 1. Algunas características de ANSI-89 SQL no se han implementado y los caracteres comodines se ajustan a la especificación Visual Basic para Aplicaciones (VBA), no a SQL.
- ANSI-92 proporciona nuevas palabras reservadas, reglas de sintaxis y caracteres comodines que mejoran la posibilidad de crear consultas, filtros e instrucciones SQL. Este modo se ajusta a la especificación ANSI-92 Nivel 1, pero no es compatible con ANSI-92 Nivel 1. Este modo de consulta es más similar a la sintaxis ANSI y los caracteres comodines se ajustan a la especificación SQL.
En Microsoft Access 2000 con ADOX (ActiveX Data Objects (ADO): interfaz de acceso a datos que se comunica con orígenes de datos compatibles con OLE DB para conectarse a, recuperar, manipular y actualizar datos.), se podían crear, mediante programación, consultas que utilizaban la sintaxis ANSI-92 SQL. Sin embargo, las consultas creadas no eran visibles en la ventana Base de datos (ventana Base de datos: ventana que aparece cuando se abre una base de datos o un proyecto de Access. Muestra métodos abreviados para crear objetos de base de datos nuevos y abrir otros existentes.), puesto que no había ninguna opción para establecer este modo en la interfaz de usuario. Ahora, en Access 2000 o posterior, puede establecer el modo de consulta ANSI SQL a través de la interfaz de usuario para la base de datos actual y como valor predeterminado para bases de datos nuevas.
Razones para utilizar ANSI-92 SQL
Puede que desee utilizar ANSI-92 SQL por los siguientes motivos:
- Tiene previsto convertir en el futuro la aplicación en un proyecto de Access (proyecto de Microsoft Access: archivo de Access que se conecta con una base de datos de Microsoft SQL Server y se utiliza para crear aplicaciones cliente-servidor. Un archivo de proyecto no contiene datos ni objetos basados en definiciones de datos, como, por ejemplo, tablas o vistas.) y desea crear consultas que se ejecutarán con pocos cambios en una base de datos de Microsoft SQL Server (base de datos de Microsoft SQL Server: una base de datos de Microsoft SQL Server consta de tablas, vistas, índices, procedimientos almacenados, funciones y desencadenadores.).
- Desea aprovechar las nuevas características no incluidas en ANSI-89 SQL, como, por ejemplo:
- Cambiar los valores de seguridad utilizando las instrucciones SQL GRANT y REVOKE
- Usar DISTINCT en una referencia de función de agregado, como por ejemplo SUMA(DISTINCT Precio). Sólo es aplicable a proyectos de Access (.adp), no se aplica a archivos de base de datos de Access (.mdb)
- Usar la cláusula LIMIT TO nn ROWS para limitar el número de filas que devolverá una consulta
Razones por las que deberá evitar mezclar consultas creadas mediante distintos modos de consulta ANSI SQL
Los dos modos de consulta ANSI SQL (modo de consulta ANSI SQL: uno de los dos tipos de sintaxis SQL: ANSI-89 SQL (también denominado Microsoft Jet SQL y ANSI SQL), que es la sintaxis Jet SQL tradicional; y ANSI-92 SQL, que tiene palabras reservadas, reglas de sintaxis y caracteres comodín nuevos y diferentes.), ANSI-89 y ANSI-92, no son compatibles. Al crear una base de datos de Microsoft Access (base de datos de Microsoft Access: colección de datos y objetos (como tablas, consultas o formularios), que está relacionada con un tema o propósito concreto. El motor de base de datos Microsoft Jet administra los datos.) deberá decidir el modo de consulta que desea utilizar. Si se mezclaran consultas (consulta: pregunta sobre los datos almacenados en las tablas o solicitud para llevar a cabo una acción en los datos. Una consulta puede unir datos de varias tablas para servir como origen de datos de un formulario, informe o página de acceso a datos.) creadas en los dos modos de consulta se podrían producir errores en tiempo de ejecución o resultados inesperados. El rango de tipos de datos, palabras reservadas y caracteres comodines es distinto en cada modo.
Ejemplo de una consulta con caracteres comodines
Una consulta que utiliza caracteres comodines en una expresión de criterios puede producir resultados distintos en cada modo de consulta. Por ejemplo, si ejecuta:
- Una consulta ANSI-89 SQL en una base de datos establecida en modo de consulta ANSI-92, como por ejemplo:
SELECT * FROM Clientes WHERE País Como 'U*'
Devuelve todos los clientes de un país o región denominado "U*" y no todos los países o regiones que empiecen por la letra "U", puesto que el asterisco (*) no es un carácter comodín en ANSI-92 SQL.
- Una consulta ANSI-92 SQL en una base de datos establecida en modo de consulta ANSI-89, como por ejemplo:
SELECT * FROM Clientes WHERE País Como 'U%'
Devuelve todos los clientes de un país o región denominado "U%" y no todos los países o regiones que empiecen por la letra "U", puesto que el signo de porcentaje (%) no es un carácter comodín en ANSI-89 SQL.
Ejemplo de una consulta con un nombre de alias y de campo replicado
Si una consulta utiliza un alias que es igual que un nombre de columna base y crea un campo calculado usando este nombre ambiguo, la consulta producirá resultados distintos en cada modo de consulta. Por ejemplo, si ejecuta la siguiente consulta:
SELECT Pedidos.IdPedido AS Cargo, Pedidos.Cargo, [Cargo]*1.1 AS [Nuevo cargo] FROM Pedidos;
En ANSI-92 SQL, Access calcula el valor de Nuevo cargo utilizando el campo Cargo y, en consecuencia, aumenta todos los cargos en un 10%. En ANSI-89 SQL, Access calcula el valor de Nuevo cargo utilizando el alias Cargo y, en consecuencia, aumenta todos los IdPedido en un 10%.
Evitar problemas causados al mezclar consultas con diferentes modos de consulta ANSI SQL en una misma base de datos
Por regla general, procure no realizar las siguientes acciones para evitar problemas provocados al mezclar consultas creadas con distintos modos de consulta ANSI SQL:
- Convertir una base de datos Access establecida en modo de consulta SQL ANSI-92 del formato de archivo 2002 - 2003 al formato de archivo 2000 o 97. El modo de consulta SQL ANSI-92 sólo es compatible con el formato de archivo 2002 - 2003.
- Cambiar el modo de consulta ANSI SQL para la base de datos actual después de crear una o más consultas. Si tiene que hacerlo, compruebe de nuevo las consultas existentes para asegurarse de que siguen funcionando y producen los resultados esperados, y vuelva a crearlas si es necesario.
- Importar consultas creadas con un modo de consulta ANSI SQL en una base de datos Access establecida en otro modo o exportar consultas creadas con un modo de consulta ANSI SQL a una base de datos Access establecida en otro modo.
- Cambiar el modo de consulta ANSI SQL en una aplicación existente. Podría interrumpir la aplicación y puede que fuera necesario volverla a escribir.
En Access 2000, sólo se puede cambiar el modo de consulta ANSI SQL mediante la programación y las consultas creadas con el modo ANSI-92 estarán ocultas en la ventana Base de datos (ventana Base de datos: ventana que aparece cuando se abre una base de datos o un proyecto de Access. Muestra métodos abreviados para crear objetos de base de datos nuevos y abrir otros existentes.). En Access 2002 o posterior, un usuario puede cambiar el modo de consulta ANSI SQL a través de la interfaz de usuario y las consultas de ANSI-92 ya no estarán ocultas en la ventana Base de datos, por lo que debe ayudar a evitar cambios accidentales o intencionados en el modo de consulta ANSI SQL de la aplicación ayudando a proteger el código y a evitar el cambio del modo de consulta a través de la interfaz de usuario de la aplicación.
-
Usar alias y nombres de columnas ambiguos. Para evitar cualquier confusión, asegúrese de que los alias y los nombres de columna sean siempre exclusivos en las instrucciones SQL.
Modo de consulta ANSI SQL predeterminado para bases de datos Access nuevas en formatos de archivo 2002 - 2003 y 2000
- ANSI-89 es el valor predeterminado para las bases de datos Access nuevas en formato de archivo 2002 - 2003 y 2000.
- No se puede establecer de manera predeterminada el modo de consulta SQL para bases de datos nuevas en ANSI-92 en formato de archivo 2000, puesto que la opción está deshabilitada; ANSI-89 es el único valor de modo de consulta disponible para bases de datos en formato de archivo Access 2000.
|