Diferentes tipos de consultas (ADP)

 Nota   La información recogida en este tema sólo se aplicará a proyectos de Microsoft Access (.adp).

Una consulta es una solicitud específica para la recuperación, creación, modificación o eliminación de información en una base de datos. Hay dos tipos básicos de consulta:

  • Una consulta de selección es cualquier consulta que recupere información para mostrarla mediante una instrucción SQL SELECT.
  • Una consulta de acción es un procedimiento almacenado que inserta, modifica o elimina información mediante las instrucciones SQL INSERT, UPDATE y DELETE.

MostrarVistas

MostrarUtilizar vistas

Almacenamiento       Las vistas se almacenan como parte de un diseño de base de datos. Como parte del diseño de una base de datos, se pueden incluir vistas para cumplir con los siguientes propósitos:

  • Ciertos subconjuntos de datos pueden ser de interés para varios usuarios. Como cada vista se almacena en la base de datos, ésta crea un subconjunto de datos particular que cualquier usuario de la base de datos puede utilizar.
  • Las vistas pueden ocultar tablas base. Puede impedir a todos los usuarios el acceso a las tablas de bases de datos, de modo que sólo puedan manipular los datos a través de las vistas. Este enfoque puede ayudar a proteger a los usuarios y a los programas de aplicaciones de ciertas modificaciones en las bases de datos. Por ejemplo, se puede crear una vista llamada "Ventas del mes en curso". El primer día de cada mes, la definición de la vista se puede modificar del modo correspondiente. Sin esta vista, los usuarios tendrían que volver a escribir sus consultas cada mes para seleccionar las Filas de ventas del mes adecuado.

Ordenar resultados       Puede ordenar una vista, pero sólo si incluye la cláusula TOP.

Generación de un plan de consultas       Un plan de consultas es una estrategia interna con la que un servidor de bases de datos intenta crear conjuntos de resultados de manera rápida. Un servidor de bases de datos puede establecer un plan de consultas para una vista tan pronto como la vista esté guardada.

MostrarUtilizar vistas indizadas y enlaces de esquemas

MostrarVistas indizadas y enlaces de esquemas

Las vistas indizadas son vistas cuyos resultados se conservan en la base de datos y se indizan para un acceso rápido. Las vistas indizadas sólo se permiten si su proyecto de Microsoft Access (proyecto de Microsoft­ Access: archivo de Access que se conecta con una base de datos de Microsoft SQL Server y se usa para crear aplicaciones cliente/servidor. Un archivo de proyecto no contiene datos ni objetos basados en definiciones de datos, como tablas o vistas.) está conectado a Microsoft SQL Server 2000 Enterprise Edition o a SQL Server 2000 Developer Edition, pero no se permiten con Microsoft SQL Server 2000 Desktop Edition. El uso de las vistas indizadas se recomienda cuando los datos son de sólo lectura (como en un sistema de soporte para decisiones), las consultas de la vista indizada no implican agregados ni combinaciones y las definiciones del esquema de tablas base de la vista indizada no es probable que cambien. Para obtener más información sobre vistas indizadas, vea la documentación de SQL Server.

Como con cualquier otra vista, las vistas indizadas dependen de las tablas base para la obtención de datos. Esta dependencia supone que si se modifica una tabla base que contribuye a una vista indizada, la vista indizada puede resultar invalidada. Por ejemplo, cambiar el nombre a una columna que contribuye a una vista invalida la vista. Para evitar estos problemas, SQL Server permite la creación de vistas con "enlaces de esquemas". Los enlaces de esquemas prohiben la modificación de cualquier tabla o columna que invalide la vista. Cualquier vista indizada creada con el Diseñador de consultas automáticamente aplica el enlace de esquemas, porque con SQL Server es necesario que las vistas indizadas utilicen el enlace de esquemas. El enlace de esquemas no prohibe la modificación de una vista, aunque sólo la permite si la modificación de las tablas o vistas subyacentes no afecta al conjunto de resultados de la vista.

Mostrar¿Qué pasa si se modifica una tabla o columna base?

Si utiliza el Diseñador de tablas o el Diseñador de bases de datos, puede intentar modificar una tabla o columna base que contribuye a una vista definida con enlace de esquemas. Si la modificación pretendida pudiera comportar la invalidación de la vista, el Diseñador le advierte de esta situación y le pregunta si desea proceder. Si elige continuar, sucede lo siguiente:

  • Las modificaciones se introducen en la tabla base.
  • Todas las vistas que dependen de las vistas de la tabla base se modifican para eliminar el "enlace de esquemas". De este modo, las siguientes modificaciones introducidas en la tabla base se aplicarán sin que se emita ninguna advertencia.
  • Si las vistas dependientes estaban indizadas, los índices se eliminan.

Tanto el Diseñador de tablas como el Diseñador de bases de datos emiten una advertencia antes de la modificación de una tabla base, pero sólo si esa tabla base contribuye a una vista con enlaces de esquema y si la modificación pretendida supone una o más de las siguientes situaciones:

  • Eliminar la tabla base
  • Cambiar el nombre de la tabla base
  • Volver a crear la tabla base
  • Eliminar de la tabla base una columna que la vista incluye.
  • Cambiar el nombre de una columna de la tabla base que la vista incluye

MostrarProcedimientos almacenados

Los procedimientos almacenados pueden facilitar tanto el proceso de administración de la base de datos como la presentación de datos relativos a esa base de datos y sus usuarios. Los procedimientos almacenados son una colección previamente compilada de instrucciones SQL y de instrucciones opcionales de control de flujo almacenadas bajo un nombre y procesadas como una unidad. Los procedimientos almacenados se almacenan en una base de datos, se pueden ejecutar con una llamada de una aplicación y admiten variables declaradas por el usuario, ejecución condicional y otras potentes características de programación.

Los procedimientos almacenados pueden incluir lógica, consultas y flujo de programa contra la base de datos. Pueden aceptar parámetros, parámetros de salida, devolver conjuntos de resultados múltiples y simples, y devolver valores.

Los procedimientos almacenados se pueden utilizar para los mismos fines para los que se utilizan las instrucciones SQL, pero con las siguientes ventajas:

  • Se puede ejecutar una serie de instrucciones SQL en un único procedimiento almacenado.
  • Se puede hacer referencia a otros procedimientos almacenados desde el propio procedimiento almacenado, lo que puede simplificar una serie de instrucciones complejas.
  • Cuando se crea un procedimiento almacenado, éste se compila en el servidor y así puede ejecutar las instrucciones SQL individuales con mayor rapidez.

Un procedimiento almacenado de instrucción única sólo contiene una instrucción SQL SELECT. Puede crearlo o modificarlo de forma gráfica en el Diseñador de consultas, así como definir sus propiedades extendidas (a excepción de las propiedades de columna).

Un procedimiento almacenado con múltiples instrucciones contiene más de una instrucción SQL. Puede crearlo o modificarlo en SQL Text Editor, y mediante el Generador de consultas incluso puede modificar de manera gráfica una instrucción SQL SELECT en un procedimiento almacenado de instrucciones múltiples. Sin embargo, no se pueden definir propiedades extendidas.

MostrarFunciones definidas por el usuario

Si un proyecto de Microsoft Access está conectado a una base de datos de Microsoft SQL Server 2000, se puede crear y utilizar funciones definidas por el usuario. El ejemplo siguiente muestra la función definida por el usuario ListCust que acepta un parámetro con nombre, devuelve una tabla y se utiliza en la cláusula FROM de una instrucción SELECT.

SELECT * FROM ListCust(@[Escriba un nombre])

MostrarDescripción de las funciones definidas por el usuario

Una función definida por el usuario es una consulta, como una vista o procedimiento almacenado, que se puede:

  • Ver en la ventana de la base de datos.
  • Crear en el Diseñador de consultas o en SQL Text Editor.
  • Utilizar para obtener datos y explorar los resultados en una hoja de datos.
  • Utilizar como origen de registro de un formulario, informe o cuadro combinado. 

 Nota   No se puede utilizar una función definida por el usuario como el origen de registro de una página de acceso a datos.

  • Manipular programáticamente con el modelo de objetos de Access.

Las funciones definidas por el usuario combinan las mejores características de las vistas y procedimientos almacenados en una consulta única que puede proporcionar valores anidar, ordenar o a la que se le pueden aportar parámetros. A menudo, las funciones definidas por el usuario son una alternativa más eficaz que las vistas y procedimientos almacenados porque permiten la obtención de una tabla de datos única o un valor escalar. También permiten ocultar la lógica empresarial y los detalles sobre cómo se generaron los datos o el valor escalar, así como simplificar la complejidad de la sintaxis de la instrucción SQL.

Para obtener más información acerca de las funciones definidas por el usuario y ver ejemplos, consulte la documentación de SQL Server.

MostrarLos tres tipos de funciones definidas por el usuario

En función del tipo de valor que devuelva, cada función definida por el usuario pertenece a una de estas tres categorías:

función en línea definida por el usuario        Contiene una única instrucción SELECT y devuelve una tabla de datos actualizable. Esta función se puede utilizar en la cláusula FROM de una consulta. Se puede crear y manipular de manera gráfica una función en línea definida por el usuario con el Diseñador de consultas. También se pueden definir las propiedades extendidas.

función de tabla definida por el usuario        Contiene una o más instrucciones SELECT y devuelve una tabla de datos no actualizable. Esta función se puede utilizar en la cláusula FROM de una consulta. Se puede crear y modificar una función de tabla definida por el usuario  con SQL Text Editor, y mediante el Generador de consultas incluso se puede editar de manera gráfica una instrucción SQL SELECT en una función de tabla definida por el usuario. Sin embargo, no se pueden definir propiedades extendidas.

función escalar definida por el usuario       Contiene una o más instrucciones SELECT y devuelve un valor escalar como, por ejemplo, los tipos de datos int, decimal, varchar, sql_variant o table. La función escalar se puede utilizar en una consulta en los mismos casos en que se puede utilizar el nombre de una columna. Las funciones escalares definidas por el usuario se pueden crear y modificar  con SQL Text Editor, y mediante el Generador de consultas incluso se puede modificar de forma gráfica una instrucción SQL SELECT en una función escalar definida por el usuario. Sin embargo, no se pueden definir propiedades extendidas.

MostrarConsultas de parámetros

Mostrar¿Qué es una consulta de parámetros?

Para ejecutar la misma consulta de manera repetida, pero con valores distintos y en momentos distintos, puede utilizar una consulta de parámetros. Un parámetro es un marcador de posición para un valor escrito durante la ejecución de una consulta. Por ejemplo, para localizar a todos los clientes en una tabla Clientes del mismo país o región, pero solicitar cada vez un país o región distinto, puede escribir @Escriba_País en la celda Criterios de la cuadrícula Diseño en el Diseñador de consultas para generar la siguiente instrucción de SQL SELECT:

SELECT * FROM Clientes 
WHERE País = @Escribir_País

El carácter del símbolo arroba (@) delante del parámetro Escribir_País indica a Access que muestre el cuadro de diálogo Escribir parámetro para que pueda escribir el nombre de un país o región, como, por ejemplo, "México" o "Dinamarca" y utilizar ese valor para la cláusula WHERE.

MostrarUtilizar parámetros

Los parámetros se pueden utilizar como marcadores de posición para valores literales ya sean de texto o numéricos. Normalmente, los parámetros se utilizan como marcadores de posición en condiciones de búsqueda para filas individuales o para grupos en las cláusulas WHERE o HAVING de una instrucción SQL.

También se puede utilizar una combinación de parámetros para especificar un rango de fechas. Por ejemplo, se pueden crear dos parámetros -@Escribir_Fecha_De_Inicio y @Escribir_Fecha_De_Finalización- en la cláusula WHERE de una consulta y, a continuación, especificar un rango de fechas de contratación al ejecutar la consulta, como se muestra en el ejemplo siguiente.

SELECT * FROM ORDERS
WHERE FechaDeEnvío
BETWEEN @Escribir_Fecha_De_Inicio AND @Escribir_Fecha_De_Finalización

También se pueden utilizar parámetros como marcadores de posición en expresiones. Por ejemplo, se pueden calcular precios corregidos mediante la aplicación de valores de descuento diferentes cada vez que se ejecuta una consulta. Para ello, se puede escribir la expresión UnitPrice * @Escribir_Descuento en la celda Columna de la cuadrícula Diseño y generar la siguiente instrucción SQL SELECT, como se muestra en la siguiente expresión:

SELECT ProductName, UnitPrice,
(UnitPrice * @Enter_Discount) AS DiscountPrice
FROM Products
                        

MostrarComparación de parámetros con y sin nombre

Puede especificar dos tipos de parámetros, parámetros con nombre y parámetros sin nombre.

Parámetros con nombre

Los parámetros con nombre son más fáciles de leer y utilizar y son especialmente útiles cuando una consulta incluye múltiples parámetros y se desea clarificar qué se debe escribir en cada parámetro. Por ejemplo, para solicitar y buscar el nombre y apellido de un autor en una tabla autores, cree la siguiente instrucción SQL SELECT:

SELECT au_id
FROM authors
WHERE au_fname = @Enter_First_Name AND au_lname = @Enter_Last_Name
                        

Al ejecutar la consulta del parámetro, Access solicita una vez cada parámetro que utilice el nombre de parámetro escrito en el cuadro de diálogo Escribir parámetros para que el usuario tenga claro el nombre que debe utilizar.

Parámetros sin nombre

También puede escribir el carácter de signo de interrogación (?) como parámetro sin nombre.

Por ejemplo, si desea recuperar a todos los autores de un estado en un procedimiento almacenado, función en línea definida por el usuario o instrucción SQL en el origen de registro de un formulario o informe, escriba el carácter de signo de interrogación (?) en la celda Criterios de la cuadrícula Diseño del Diseñador de consultas para generar la siguiente instrucción SQL SELECT:

SELECT au_lname, au_fname
FROM state
WHERE state = @Param1
                        

En este caso, Access automáticamente dará el nombre generado, @Param1, al parámetro sin nombre.

 Nota   Access no genera un nombre en el caso de que la instrucción SQL pertenezca al origen de registro de un formulario o informe.

MostrarUtilización de los parámetros con nombre

Puede utilizar parámetros con nombre en las siguientes situaciones:

  • Cuando un proyecto de Microsoft Access está conectado a una base de datos de Microsoft SQL Server de la versión 2000.
  • En el Diseñador de consultas de un procedimiento almacenado o función en línea definida por el usuario.
  • En el SQL Text Editor de un procedimiento almacenado, función escalar definida por el usuario o función de tabla definida por el usuario.

No se pueden utilizar parámetros con nombre en la instrucción SQL de un origen de registro creado en el Diseñador de consultas.

No se pueden utilizar parámetros con nombre ni parámetros sin nombre en una vista (vista (objeto): en un proyecto de Access, un tipo de consulta que es una tabla virtual basada en una instrucción SQL SELECT. Por ejemplo, una vista puede contener únicamente 3 de las 10 columnas disponibles en una combinación de dos tablas, con el fin de limitar el acceso a determinados datos.).

MostrarConsultas de acción

 Puede crear los siguientes tipos de consultas de acción en los paneles Diagrama y Cuadrícula (los paneles gráficos) del Diseñador de consultas:

  • Consulta de Anexar valores       Crea una fila nueva e inserta valores literales en columnas especificadas. Este tipo de consulta crea una instrucción SQL INSERT INTO...VALUES.
  • Consulta de datos anexados       Crea filas nuevas al copiar filas existentes de una tabla a otra o a la misma tabla como filas nuevas. Este tipo de consulta crea una instrucción SQL INSERT...SELECT.
  • Consulta de actualización       Modifica los valores de las columnas individuales en una o más filas existentes de una tabla. Este tipo de consulta crea una instrucción SQL UPDATE.
  • Consulta de eliminación       Elimina una o más filas de una tabla. Este tipo de consulta crea una instrucción SQL DELETE.

 Nota    Una consulta de eliminación suprime filas completas de la tabla. Si desea eliminar valores de columnas de datos individuales, utilice la consulta de actualización.

  • Consulta de creación de tabla       Crea una tabla nueva y sus filas al copiar los resultados de una consulta. Este tipo de consulta crea una instrucción SQL SELECT...INTO.

MostrarInstrucciones SQL SELECT

Una instrucción SQL se puede utilizar como el origen de registros de un formulario o informe o como el origen de filas de un cuadro de lista o cuadro combinado de un formulario. Esta operación resulta de gran utilidad para evitar que la consulta se muestre en la ventana de la base de datos. Para crear la instrucción SQL SELECT puede utilizar el botón Generar Imagen del botón que está a la derecha del campo y diseñar gráficamente la instrucción SQL SELECT en el Generador de consultas. También puede modificar su propia instrucción SQL SELECT en cualquier editor de textos y, a continuación, copiarla y pegarla en el campo de propiedades OrigenDeRegistros (RecordSource).

 
 
Corresponde a:
Access 2003