Usar campos multivalor en consultas

Importante:  Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

En Microsoft Office Access 2007, puede crear un campo que contiene varios valores, como una lista de personas a las que se ha asignado un asunto. Los campos multivalor son adecuados para determinadas situaciones, como cuando usa Office Access 2007 para trabajar con la información guardada en una lista de Windows SharePoint Services 3.0 y esa lista contiene un campo que utiliza uno de los tipos de campo multivalor disponibles en Windows SharePoint Services 3.0.

En este artículo se explican los campos multivalor y cómo usarlos en consultas.

En este artículo

¿Qué es un campo multivalor?

Introducción a las consultas

Mostrar un campo multivalor en una consulta

Mostrar valores individuales en un campo multivalor

Comprender el valor enlazado y el valor de la presentación en un campo de búsqueda

Cómo mostrar el valor enlazado en una consulta

Criterios de consulta simple para un campo multivalor

Buscar más de un valor en un campo multivalor

Comprender el impacto de incluir un. Campo de valor en la lista de campos

Contar, agrupar y usar otras funciones de agregado

Usar una consulta de datos anexados con un campo multivalor

Usar una consulta de actualización con un campo multivalor

Usar una consulta de eliminación con un campo multivalor

Volver al principio

Qué es un campo multivalor

Supongamos que tiene que asignar una tarea a uno de sus empleados o contratistas, pero decide que debe asignarla a más de una persona. En Office Access 2007, puede crear un campo multivalor que le permita seleccionar las personas en una lista.

Campo multivalor

Cuando hace clic en el cuadro combinado, las casillas de verificación aparecen activadas para indicar las opciones seleccionadas. Puede activar o desactivar los elementos de la lista y luego hacer clic en Aceptar para enviar las opciones seleccionadas.

Cuadro combinado de campo multivalor

Las personas seleccionadas están almacenadas en el campo multivalor y, cuando se muestran, están separadas por comas de forma predeterminada.

Campo multivalor con valores separados por una coma

La idea que subyace en los campos multivalor es facilitar la compatibilidad de esas instancias en las que se desea seleccionar y almacenar más de una opción, sin tener que crear un diseño de base de datos más avanzado. Los campos multivalor también son importantes para la integración con Windows SharePoint Services porque las listas de SharePoint también admiten este tipo de campos.

Se puede estar preguntando por qué Office Access 2007 permite almacenar más de un valor en un campo, cuando la mayoría de los sistemas de administración de bases de datos relacionales no lo permiten. La respuesta es que el motor de base de datos de Office Access 2007 no almacena en realidad los valores en un único campo. Aunque lo que ve y lo que utiliza parezca estar en un único campo, los valores se almacenan de forma independiente y se administran en tablas de sistema ocultas. El motor de base de datos de Access se encarga de todo, separando los datos automáticamente y reuniéndolos de nuevo en un campo.

Técnicamente hablando, un campo multivalor de Access es similar a una relación varios a varios. Por ejemplo, en una tabla de eventos en la que se asigna la responsabilidad de cada evento a uno o más empleados, supongamos que ha creado un campo multivalor denominado "AsignadoA para asignar los eventos a los empleados. La relación entre los eventos y los empleados es una relación varios a varios. Es decir, puede asignar varios empleados a un evento, y también puede asignar un empleado a varios eventos.

Volver al principio

Presentación de consultas

Las bases de datos existen con el principal fin de proporcionar información: "¿Cuál es el producto que más vendemos? ¿Quién es nuestro mejor cliente? ¿Dónde no alcanzamos nuestros objetivos de ventas?" Todas ellas son preguntas que puede hacer legítimamente a una base de datos bien diseñada. Para obtener respuestas de la base de datos de Access, se crea una consulta y se especifican los criterios necesarios. Los datos de una consulta pueden proceder de una o varias tablas. Después de que Access recupere los datos que responden a su pregunta, lo podrá ver y analizar. Una vez que haya creado una consulta, puede utilizarla como base para un formulario, informe, gráfico o incluso otra consulta.

Office Access 2007 permite emplear campos multivalor en determinadas consultas y de maneras concretas. Puede mostrar un campo multivalor en una consulta, mostrar los valores individuales en un campo multivalor de una consulta, y realizar algunas operaciones de agregado y consultas de acción seleccionadas mediante campos multivalor.

Volver al principio

Mostrar un campo multivalor en una consulta

Cuando se muestra un campo multivalor en una consulta, hay que decidir si se desea mostrar el campo multivalor completo con todos los valores separados por comas, o una fila independiente para cada valor. Por ejemplo, supongamos que tiene una tabla denominada Asuntos que contiene un campo denominado AsignadoA que utiliza para asignar los asuntos a personas. Puede crear una consulta que contenga el campo AsignadoA mediante el siguiente procedimiento:

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. Haga clic en Cerrar.

  6. Arrastre los campos que desea usar a la cuadrícula de diseño de la consulta. En este ejemplo, arrastre el campo Título (Title) y el campo multivalor denominado AsignadoA a la cuadrícula de la consulta.

  7. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar.

El resultado de la consulta será similar a la figura siguiente, una columna muestra el nombre del asunto y la segunda, el campo multivalor: 

Resultado de la consulta que muestra los campos Títulos y AsignadoA

Al crear una consulta mediante la vista Diseño, Access genera automáticamente la instrucción SQL (Structured Query Language o Lenguaje de consulta estructurado) correspondiente. SQL es el lenguaje de consulta que usa Access. Puede cambiar a Vista SQL para ver la instrucción SQL mediante el siguiente procedimiento.

  1. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  2. Haga clic en Vista SQL.

La instrucción SQL resultante tiene este aspecto:

SELECT Issues.Title, 
Issues.AssignedTo
FROM Issues;

Volver al principio

Mostrar valores individuales en un campo multivalor

Supongamos que desea ver el campo multivalor AsignadoA expandido (a veces denominado ampliado), de forma que cada nombre o valor de AsignadoA aparezca en una fila independiente. Para ello, deberá especificar la propiedad Value agregando la cadena ".Value" a "AsignadoA" en la fila Campo, tal como se muestra aquí en la cuadrícula de la consulta:

Cuadrícula de la consulta que muestra Título y AsignadoA.Value

Si especifica AsignadoA en la fila Campo, Access mostrará todos los valores del campo multivalor en una sola fila cuando ejecute la consulta. Sin embargo, si utiliza la propiedad Value, como en AsignadoA.Value, Access mostrará el campo multivalor de forma expandida de modo que cada valor aparezca en una fila independiente. Puede crear una consulta para ver los valores individuales mediante el siguiente procedimiento:

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. Haga clic en Cerrar.

  6. Arrastre los campos que desea utilizar (en este ejemplo, el campo multivalor denominado "AsignadoA.Value") a la cuadrícula de la consulta.

  7. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar.

Resultado de la consulta que muestra el Título y los valores AsignadoA individuales

Al crear una consulta mediante la vista Diseño, Access genera automáticamente la instrucción SQL (Structured Query Language) correspondiente. SQL es el lenguaje de consulta que usa Access. Puede cambiar a la vista SQL para ver la instrucción SQL mediante el siguiente procedimiento.

  1. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  2. Haga clic en Vista SQL.

La instrucción SQL resultante tiene este aspecto:

SELECT Issues.Title, 
Issues.AssignedTo.Value
FROM Issues;

Volver al principio

Comprender el valor enlazado y el valor mostrado en un campo de búsqueda

Un campo multivalor es un campo de búsqueda. Un campo de búsqueda es un campo de una tabla cuyo valor se recupera de otra tabla o consulta, o de una lista de valores. Access admitió campos de búsqueda de valor único durante varias versiones. Los campos de búsqueda multivalor son una novedad de Office Access 2007. La finalidad de un campo de búsqueda es reemplazar la visualización de un número como un Id.(ID) (u otro tipo de clave extranjera) por algo más significativo, como un nombre. Por ejemplo, en lugar de mostrar un número de Id. de contacto, Access puede mostrar un nombre de contacto. El número de Id. de contacto es el valor enlazado. Se busca automáticamente en una tabla o consulta de origen y se reemplaza por el nombre de contacto. El nombre de contacto es el valor mostrado.

Al igual que sucede con un campo de búsqueda de valor único que tiene un valor mostrado y un valor enlazado, un campo de búsqueda multivalor tiene valores mostrados que aparecen en la interfaz de usuario y valores enlazados que se guardan en la tabla. Para cada entrada en el campo multivalor, se "busca" un valor mostrado, basándose en el valor enlazado.

Esto significa que Access muestra a menudo un valor mostrado buscado que no es el mismo que el valor enlazado que se guarda en el campo. Por ejemplo, en el ejemplo anterior que utiliza el campo AsignadoA, una serie de valores de Id. de empleados de la consulta Contactos extendidos se guarda en el campo AsignadoA. La consulta Contactos extendidos se seleccionó como Origen de la fila al crear el campo multivalor.

Estos Id. de empleados son los valores enlazados. No obstante, como el campo AsignadoA es un campo de búsqueda, Access muestra la serie de valores de búsqueda en el resultado de la consulta, en este caso, los nombres de contacto. Los nombres de contacto son los valores mostrados.

Hoja de datos con valores para mostrar y hoja de datos con valores enlazados

1. Valores mostrados

2. Valores enlazados.

Puede ver las propiedades de búsqueda para un campo multivalor en la vista Diseño del modo siguiente:

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el panel de exploración, haga clic con el botón secundario del mouse (ratón) en la tabla donde se guarda el campo multivalor.

  4. Haga clic en Vista Diseño.

  5. Haga clic en el campo multivalor (por ejemplo, haga clic en AsignadoA).

  6. En Propiedades de campo, haga clic en la ficha Búsqueda.

Propiedades del campo de búsqueda multivalor

Es importante entender la distinción entre el valor mostrado del campo de búsqueda y el valor enlazado. El valor mostrado aparece automáticamente en la vista de hoja de datos de manera predeterminada. No obstante, el valor enlazado es lo que está guardado, lo que usa en los criterios de la consulta y lo que Access utiliza de forma predeterminada en combinaciones con otras tablas.

Volver al principio

Cómo mostrar el valor enlazado en una consulta

El valor mostrado aparece automáticamente en la vista de hoja de datos de manera predeterminada. Cuando crea una consulta, puede omitir este comportamiento para que se muestre en su lugar el valor enlazado. Los pasos que debe seguir aparecen en el siguiente procedimiento:

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. Haga clic en Cerrar.

  6. Arrastre los campos que desea usar a la cuadrícula de diseño de la consulta. En este ejemplo, arrastre el campo Título y el campo multivalor denominado AsignadoA.Value a la cuadrícula de la consulta.

  7. Haga clic en el campo AsignadoA.Value de la cuadrícula de la consulta para que este campo adquiera el enfoque.

  8. En la ficha Diseño, en el grupo Mostrar u ocultar, haga clic en Hoja de propiedades.

  9. En la Hoja de propiedades, en la ficha Búsqueda, en la propiedad Control de pantalla , seleccione Cuadro de texto.

Propiedad Control de pantalla en un diseño de consulta

Cuando cambie la propiedad Control de pantalla a la propiedad Cuadro de texto, se desactiva el comportamiento normal de una columna de búsqueda para que aparezca el valor enlazado en lugar del valor mostrado.

Valor enlazado mostrado en un resultado de consulta

Volver al principio

Especificar criterios de consulta sencillos para un campo multivalor

Suponga que desea ver los Asuntos asignados a "Kelly Rollin". Puede especificar criterios de consulta en la fila Criterios de la cuadrícula de la consulta pero cuando especifica criterios para un campo de búsqueda, debe especificar el valor enlazado y no el valor mostrado. En este caso, determina que el valor enlazado para Kelly Rollin es 6. Es el valor de clave principal correspondiente en la consulta Contactos extendidos para Kelly.

Para crear una consulta que muestra los asuntos asignados a Kelly:

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. Haga clic en Cerrar.

  6. Arrastre los campos que desea usar a la cuadrícula de la consulta. En este ejemplo, arrastre Título a la primera columna de la cuadrícula. Luego, arrastre AsignadoA a la segunda columna.

  7. En la ficha de la cuadrícula de la consulta, en AsignadoA, en la fila Criterios, escriba 6. Observe que ha escrito el valor enlazado y no el valor mostrado.

    Cuadrícula de la consulta con criterios en un campo multivalor

  8. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

Cuando ejecute la consulta, aparece el resultado en la vista Hoja de datos. Observe que la consulta devuelve sólo las filas en las que aparece "Kelly Rollin".

Resultado de la consulta en la que el valor AsignadoA incluye 6

Al crear una consulta mediante la vista Diseño, Access genera automáticamente la instrucción SQL (Structured Query Language) correspondiente. SQL es el lenguaje de consulta que usa Access. Puede cambiar a la vista SQL para ver la instrucción SQL mediante el siguiente procedimiento.

  1. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  2. Haga clic en Vista SQL.

La instrucción SQL resultante tiene este aspecto:

SELECT Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Buscar texto en lugar de un número de Id.

¿Qué sucede si cree que la especificación de números de Id. es incómoda y prefiere especificar el nombre "Kelly Rollin" como valor de búsqueda? Para este trabajo debe tener un campo en la consulta que contenga el nombre textual. De este modo puede buscar "Kelly Rollin" en este campo.

No puede usar el campo AsignadoA.Value porque su valor enlazado es un Id. y, por lo tanto, debe definir un Id. para filtrar este campo.

En este ejemplo, el campo de nombre de contacto no reside en una tabla, sino en la consulta de origen que proporciona datos para el campo multivalor AsignadoA. Puede combinar la tabla o consulta de origen para el campo multivalor con la tabla que contiene el campo multivalor a fin de incluir un campo (nombre de contacto en este ejemplo) de la tabla o consulta de origen en el resultado de la consulta. A continuación, puede buscar este campo en lugar del campo multivalor.

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. En el cuadro de diálogo Mostrar tabla, haga clic en la ficha Consultas y luego en la consulta (en este ejemplo, "Contactos extendidos") que es el origen del campo multivalor y finalmente en Agregar.

  6. Haga clic en Cerrar.

  7. Arrastre los campos que desea usar a la cuadrícula de la consulta. En este ejemplo, arrastre Título de la tabla Asuntos a la primera columna de la cuadrícula. A continuación, arrastre Nombre de contacto de la consulta Contactos extendidos a la segunda columna y desactive la casilla de verificación Mostrar. Luego, arrastre AsignadoA a la tercera columna.

  8. Si no está visible una línea de combinación entre el campo Id. en la consulta Contactos extendidos y el campo AsignadoA.Value tal como se muestra a continuación, haga clic y arrastre el campo Id. de la consulta Contactos extendidos al campo AsignadoA.Value en la tabla Asuntos.

    Aparece una línea de combinación.

    Si hay otras líneas de combinación visibles, elimínelas. Para eliminar una línea de combinación, haga clic en ella para realzarla y presione SUPRIMIR.

  9. En la cuadrícula de la consulta, en Nombre del contacto, en la fila Criterios, escriba "Kelly Rollin".

    Cuadrícula de la consulta con criterios AsignadoA que contienen quot;Kelly Rollin"

  10. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

Cuando ejecute la consulta, aparece el resultado en la vista Hoja de datos. Observe que los resultados de la consulta devuelven sólo las filas en las que aparece "Kelly Rollin". Esta técnica funciona porque la combinación entre el Id. de la tabla o consulta de origen y el campo AsignadoA.Value devuelve un fila distinta para cada valor del campo multivalor; y cada fila contiene también un campo Nombre de contacto con el nombre completo. Como Nombre de contacto es un nombre calculado en lugar de un campo de búsqueda, no hay un valor enlazado y un valor mostrado. Sólo hay un valor: el nombre de contacto. Por lo tanto, puede proporcionar el texto que desea encontrar, en este caso "Kelly Rollin."

Resultado de la consulta con AsignadoA que contiene quot;Kelly Rollin"

Al crear una consulta mediante la vista Diseño, Access genera automáticamente la instrucción SQL (Structured Query Language) correspondiente. SQL es el lenguaje de consulta que usa Access. Puede cambiar a la vista SQL para ver la instrucción SQL mediante el siguiente procedimiento.

  1. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  2. Haga clic en Vista SQL.

La instrucción SQL resultante tiene este aspecto:

SELECT Issues.Title, Issues.AssignedTo 
FROM [Contacts Extended] INNER JOIN Issues ON
[Contacts Extended].ID = Issues.AssignedTo.Value
WHERE ((([Contacts Extended].[Contact Name])=
"Kelly Rollin"));

Volver al principio

Buscar más de un valor en un campo multivalor

A veces, debe buscar algo por más de un valor. Suponga que desee ver los asuntos en los que tanto "Kelly Rollin" como "Lisa Miller" están entre los valores del campo AsignadoA. El valor enlazado de Kelly Rollin es 6 y el de Lisa Miller es 10. Para especificar varios criterios para un campo multivalor, puede usar los operadores AND y OR.

Para crear la consulta, use el procedimiento siguiente.

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En la ficha Crear, en el grupo Otros, haga clic en Diseño de la consulta.

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. Haga clic en Cerrar.

  6. Arrastre los campos que desea usar a la cuadrícula de la consulta. En este ejemplo, arrastre Título a la primera columna de la cuadrícula. Luego, arrastre AsignadoA a la segunda columna.

  7. En la cuadrícula de la consulta, en AsignadoA, en la fila criterios, escriba 6 y 10.

    Consulta que muestra el uso de AND en un campo multivalor

  8. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

Cuando ejecute la consulta, aparece el resultado en la vista Hoja de datos.

Resultado de la consulta que muestra el uso de AND en un campo multivalor

El resultado muestra sólo los asuntos que se han asignado tanto a Kelly Rollin como a Lisa Miller. Al crear una consulta mediante la vista Diseño, Access genera automáticamente la instrucción SQL (Structured Query Language) correspondiente. SQL es el lenguaje de consulta que usa Access. Puede cambiar a la vista SQL para ver la instrucción SQL mediante el siguiente procedimiento.

  1. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  2. Haga clic en Vista SQL.

La instrucción SQL resultante tiene este aspecto:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
And (Issues.AssignedTo.Value)=10));

Usar el operador OR en lugar del operador AND

Suponga que desea cambiar la consulta para que liste las filas en las que aparecen "Kelly Rollin" o "Lisa Miller". Puede editar la instrucción SQL para que use el operador OR en lugar de AND. La instrucción debería aparecer así:

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
Or (Issues.AssignedTo.Value)=10));

Cuando ejecute la consulta, aparece el resultado en la vista Hoja de datos.

Consulta que usa el operador Or con un campo multivalor

El resultado muestra sólo los asuntos que se han asignado a Kelly Rollin o a Lisa Miller.

Volver al principio

Comprender el impacto de incluir un campo .Value en una lista de campos

Es importante comprender el impacto de incluir un campo .Value en la lista de columnas resultantes (la lista SELECT) de la consulta. Cuando se procesa la consulta, el primer paso es generar un conjunto de resultados sin el efecto de una cláusula WHERE o un filtro. El filtro se aplica luego al conjunto inicial. Puede ser útil para pensar en este conjunto de resultados como el generado en primer lugar y que luego se haya reducido por el filtro en la cláusula WHERE. Por ejemplo, considere este ejemplo:

SELECT Issues.Title, AssignedTo
FROM Issues
WHERE NOT AssignedTo.Value = 3;

El conjunto de resultados inicial puede tener el siguiente aspecto, antes de filtrarlo:

Título

AsignadoA

Asunto 1

David Hamilton, Eva Valverde

Asunto 2

Kathleen Gail Jensen, Kelly Rollin, Susan Burk, Lisa Miller

Asunto 3

Jesper Aaberg, Kelly Rollin, Eva Valverde, Tom Michaels

Asunto 4

Wei Yu, Lisa Miller

Asunto 5

David Hamilton, Kathleen Gail Jensen

Asunto 6

Sanjay Jacob, Kelly Rollin

Asunto 7

Jesper Aaberg, Susan Burk

Asunto 8

David Hamilton

Asunto 9

Kelly Rollin, Lisa Miller

Asunto 10

Eva Valverde, Tom Michaels

La operación del filtrado se realiza luego en el conjunto de resultados inicial y se seleccionan las filas que no contienen David Hamilton, cuyo Id. es 3:

Título

AsignadoA

Asunto 2

Kathleen Gail Jensen, Kelly Rollin, Susan Burk, Lisa Miller

Asunto 3

Jesper Aaberg, Kelly Rollin, Eva Valverde, Tom Michaels

Asunto 4

Wei Yu, Lisa Miller

Asunto 6

Sanjay Jacob, Kelly Rollin

Asunto 7

Jesper Aaberg, Susan Burk

Asunto 9

Kelly Rollin, Lisa Miller

Asunto 10

Eva Valverde, Tom Michaels

Ahora, considere un segundo ejemplo: uno que incluya el campo .Value en la lista de campos. Observe primero cómo cambia la presencia del campo .Value el conjunto de resultados inicial, antes de filtrarlo:

SELECT Issues.Title, AssignedTo.Value
FROM Issues
WHERE NOT AssignedTo.Value = 3;

El conjunto de resultados inicial tiene el siguiente aspecto, antes de filtrarlo:

Título

AsignadoA.Value

Asunto 1

David Hamilton

Asunto 1

Eva Valverde

Asunto 2

Kathleen Gail Jensen

Asunto 2

Kelly Rollin

Asunto 2

Lisa Miller

Asunto 2

Susan Burk

Asunto 3

Eva Valverde

Asunto 3

Jesper Aaberg

Asunto 3

Kelly Rollin

Asunto 3

Tom Michaels

Asunto 4

Lisa Miller

Asunto 4

Wei Yu

Asunto 5

David Hamilton

Asunto 5

Kathleen Gail Jensen

Asunto 6

Kelly Rollin

Asunto 6

Sanjay Jacob

Asunto 7

Jesper Aaberg

Asunto 7

Susan Burk

Asunto 8

David Hamilton

Asunto 9

Kelly Rollin

Asunto 9

Lisa Miller

Asunto 10

Tom Michaels

Asunto 10

Eva Valverde

Ahora, la operación del filtrado se realiza en el conjunto de resultados inicial y se seleccionan sólo las filas que no contienen David Hamilton, cuyo Id. es 3:

Título

AsignadoA.Value

Asunto 1

Eva Valverde

Asunto 2

Kathleen Gail Jensen

Asunto 2

Kelly Rollin

Asunto 2

Lisa Miller

Asunto 2

Susan Burk

Asunto 3

Eva Valverde

Asunto 3

Jesper Aaberg

Asunto 3

Kelly Rollin

Asunto 3

Tom Michaels

Asunto 4

Lisa Miller

Asunto 4

Wei Yu

Asunto 5

Kathleen Gail Jensen

Asunto 6

Kelly Rollin

Asunto 6

Sanjay Jacob

Asunto 7

Jesper Aaberg

Asunto 7

Susan Burk

Asunto 9

Kelly Rollin

Asunto 9

Lisa Miller

Asunto 10

Tom Michaels

Asunto 10

Eva Valverde

Ver el conjunto de resultados antes y después de aplicar el filtro debe facilitar la previsión correcta del resultado de la consulta.

Volver al principio

Contar, agrupar y usar otras funciones de agregado

Es posible que desea realizar cálculos en grupos de valores que se guardan en un campo multivalor. Por ejemplo, ¿cuántos asuntos están asignados a cada persona? ¿Cuántas personas están asignadas a cada asunto? Puede realizar este tipo de cálculo empleando una función de agregado en una consulta Totales.

Una función de agregado realiza un cálculo en un conjunto de valores y devuelve luego un valor único. Por ejemplo, Suma, Cuenta y Promedio son tres de las funciones de agregado que puede utilizar para calcular totales. Puede calcular totales para todos los registros o para grupos de registros. Para resumir por grupo, debe seleccionar el campo o campos por los que agrupar en la cuadrícula de la consulta.

El siguiente procedimiento muestra cómo se crea un consulta para contar el número de asuntos asignados a cada persona.

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. Haga clic en Cerrar.

  6. Arrastre los campos que desea usar a la cuadrícula de la consulta. En este ejemplo, arrastraría AsignadoA.Value a la primera columna de la cuadrícula. Luego, arrastre Título a la segunda columna.

  7. En la ficha Diseño, en el grupo Mostrar u ocultar, haga clic en Totales.

    La fila Total se muestra en la cuadrícula de la consulta. Agrupar por aparece de forma predeterminada en la celda Total bajo cada campo de la consulta.

  8. En la cuadrícula de la consulta, en Título, en la fila Total, haga clic en Cuenta.

  9. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

Al diseñar la consulta, especifica los campos que usa para agrupar y los que usa para los totales (cálculos). En este ejemplo, AsignadoA.Value es el campo utilizado para agrupar y Título el campo para el cálculo del total. Para los campos que desea usar para agrupar, seleccione Agrupar por en la fila Total. Para los campos que desea usar para el cálculo del total, seleccione un tipo de cálculo (como Suma o Promedio). Observe que cuando usa un campo multivalor para agrupar, debe usar el campo .Value. En este ejemplo, no puede utilizar el campo AsignadoA para agrupar, debe usar el campo AsignadoA.Value. También debe utilizar el campo .Value cuando usa un campo multivalor para ordenar.

Nota: Cuando usa un campo multivalor para agrupar, debe utilizar el campo .Value. Si utiliza un campo multivalor para ordenar, tiene que usar el campo .Value.

Cuando ejecute la consulta, aparece el resultado en la vista Hoja de datos.

Consulta que cuenta los asuntos asignados a cada persona

Para ver la instrucción SQL para esta consulta, cambie a la vista SQL mediante el siguiente procedimiento.

  1. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  2. Haga clic en Vista SQL.

La instrucción SQL resultante tiene este aspecto:

SELECT Issues.AssignedTo.Value, 
Count(Issues.Title) AS CountOfTitle
FROM Issues
GROUP BY Issues.AssignedTo.Value;

Suponga que desea saber cuántas personas están asignadas a cada tarea. Puede agrupar por Título y seleccionar Cuenta como cálculo para el campo multivalor. Para crear la consulta, use el procedimiento siguiente.

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro diálogo Mostrar tabla, haga clic en la tabla (en este ejemplo, "Asuntos") que contiene el campo multivalor y, a continuación, haga clic en Agregar.

  5. Haga clic en Cerrar.

  6. Arrastre los campos que desea usar a la cuadrícula de la consulta. En este ejemplo, arrastraría Título a la primera columna de la cuadrícula. Luego, arrastre AsignadoA a la segunda columna.

  7. En la ficha Diseño, en el grupo Mostrar u ocultar, haga clic en Totales.

    La fila Total se muestra en la cuadrícula de la consulta. Agrupar por aparece de forma predeterminada en la celda Total bajo cada campo de Título. Expresión aparece de forma predeterminada en la celda Total bajo el campo AsignadoA: esto se debe a que no puede realizar una operación Agrupar por en un campo multivalor. Sólo puede hacerlo en un campo multivalor .Value.

  8. En la cuadrícula de la consulta, en AsignadoA, en la fila Total, haga clic en Cuenta.

  9. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

Cuando ejecute la consulta, aparece el resultado en la vista Hoja de datos.

Resultado de la consulta que muestra la cuenta del número de personas por asunto

Para ver la instrucción SQL para esta consulta, cambie a la vista SQL mediante el siguiente procedimiento.

  1. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  2. Haga clic en Vista SQL.

La instrucción SQL resultante tiene este aspecto:

SELECT Issues.Title, 
Count(Issues.AssignedTo) AS CountOfAssignedTo
FROM Issues
GROUP BY Issues.Title;

Nota: En esta instrucción SELECT de SQL, no importa si usa Cuenta(Asuntos.AsignadoA) o Cuenta(Asuntos.AsignadoA.Value): el resultado es el mismo.

Volver al principio

Usar una consulta de datos anexados con un campo multivalor

Puede insertar un valor único en un campo multivalor mediante una consulta de inserción. Por ejemplo, suponga que desee agregar "Kelly Rollin" al campo multivalor AsignadoA para un asunto. Debe determinar primero el valor de clave principal para el asunto y el registro de contacto para Kelly. Suponga que los valores son 10 para el asunto y 6 para Kelly.

El siguiente procedimiento muestra cómo se crea la consulta.

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En el grupo Otros de la pestaña Crear, haga clic en Diseño de consulta.

    Imagen de la cinta de Access

  4. En el cuadro de diálogo Mostrar tabla, haga clic en Cerrar.

  5. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  6. Haga clic en Vista SQL.

  7. En la vista SQL, escriba la siguiente instrucción SQL:

    INSERT INTO Issues ( AssignedTo.[Value] )
    VALUES (6)
    WHERE ID = 10;
  8. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

    Es posible que Access le solicite que confirme si va a anexar la fila seleccionada. Haga clic en para insertar la fila o en No para cancelar.

Kelly aparece ahora en el campo AsignadoA para este asunto. Es la única forma de que la consulta de inserción funcione con un campo multivalor.

Nota: Una consulta de datos anexados es una consulta que se usa para agregar registros de una tabla a otra existente. En Office Access 2007, no puede usar una consulta de datos anexados que haga referencia a una tabla que contiene un campo multivalor. Por ejemplo, la siguiente consulta no es válida:

INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;

Volver al principio

Usar una consulta de actualización con un campo multivalor

Se puede usar una consulta de actualización para cambiar los valores de registros existentes. Cuando usa la consulta de actualización para actualizar una tabla que contiene campos multivalor, puede cambiar un valor único en un campo multivalor por otro valor. Suponga que desea actualizar el campo multivalor AsignadoA para un asunto en concreto, por ejemplo, para reemplazar "Kelly Rollin" por "Lisa Miller." Primero debe determinar el valor de clave principal para el asunto y los registros de contacto para Kelly y Lisa. Suponga que 8 es el valor para el asunto, 6 es el valor para Kelly y 10 es el valor para Lisa.

El siguiente procedimiento muestra cómo se crea la consulta.

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En la ficha Crear, en el grupo Otros, haga clic en Diseño de la consulta.

  4. En el cuadro de diálogo Mostrar tabla, haga clic en Cerrar.

  5. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  6. Haga clic en Vista SQL.

  7. En la vista SQL, escriba la siguiente instrucción SQL:

    UPDATE Issues 
    SET Issues.AssignedTo.Value = 10
    WHERE (((Issues.AssignedTo.Value)=6)
    AND ((Issues.ID)=8));

    Notas: 

    • Debe incluir siempre una cláusula WHERE que identifique sólo los registros que desea actualizar. Si no, se actualizarán registros que no deseaba cambiar. Una consulta de actualización que no contiene una cláusula WHERE cambia todas las filas de una tabla.

    • Puede especificar un valor que desee cambiar.

  8. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

    Es posible que Access le solicite que confirme si va a actualizar el registro. Haga clic en para actualizar la fila o en No para cancelar.

Lisa Miller aparece ahora en lugar de Kelly Rollin en el campo AsignadoA para este asunto.

Volver al principio

Usar una consulta de eliminación con un campo multivalor

Puede usar una consulta de eliminación para eliminar registros de una tabla. Cuando trabaja con una tabla que contiene un campo multivalor, puede usar una consulta de eliminación para eliminar registros que contienen un valor en particular en un campo multivalor o para eliminar un valor determinado de un campo multivalor en todos los registros de la tabla.

Suponga que desea eliminar "Kelly Rollin" del campo AsignadoA en toda la tabla. Debe crear una consulta mediante el siguiente procedimiento.

  1. Haga clic en el botón de Microsoft Office Imagen del botón de Office y, a continuación, en Abrir.

  2. En el cuadro de diálogo Abrir, seleccione y abra la base de datos.

  3. En la ficha Crear, en el grupo Otros, haga clic en Diseño de la consulta.

  4. En el cuadro de diálogo Mostrar tabla, haga clic en Cerrar.

  5. En la ficha Diseño, en el grupo Resultados, haga clic en Ver para mostrar el menú Ver.

  6. Haga clic en Vista SQL.

  7. En la vista SQL, escriba la siguiente instrucción SQL:

    DELETE Issues.AssignedTo.Value
    FROM Issues
    WHERE (((Issues.AssignedTo.Value)=6));
  8. En la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar para ejecutar la consulta.

    Es posible que Access le solicite que confirme si va a eliminar los registros. Haga clic en para actualizar la fila o en No para cancelar.

La consulta del ejemplo siguiente no elimina ningún registro de la tabla Asuntos. Elimina un valor del campo multivalor AsignadoA en cada registro en el que aparezca el valor. Si desea eliminar registros de la tabla Asuntos, no especifique ningún campo tras la cláusula DELETE en la instrucción SQL. Por ejemplo, para eliminar todos los asuntos que tienen "Kelly Rollin" entre las personas a las que se ha asignado el asunto, escriba la siguiente instrucción SQL:

DELETE 
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Nota: Tenga cuidado cuando elimina registros mediante una consulta de eliminación. No podrá recuperarlos una vez eliminados.

Volver al principio

Nota: Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×