Utilizzo di campi multivalore nelle query

In Microsoft Office Access 2007 è possibile creare un campo contenente più valori, ad esempio un elenco di persone alle quali è stato assegnato un problema. I campi multivalore risultano appropriati in certe situazioni, ad esempio quando in Office Access 2007 si utilizzano informazioni memorizzate in un elenco di Windows SharePoint Services 3.0 contenente un campo che utilizza uno dei tipi di campo multivalore disponibili in Windows SharePoint Services 3.0.

In questo articolo vengono illustrati i campi multivalore e la loro modalità di utilizzo nelle query.

Contenuto dell’articolo

Informazioni sui campi multivalore

Introduzione alle query

Visualizzazione di campo multivalore in una query

Visualizzazione dei singoli valori in un campo multivalore

Informazioni sul valore associato e sul valore visualizzato in un campo di ricerca

Visualizzare il valore associato in una query

Immissione di criteri di query semplici per un campo multivalore

Ricerca di più valori in un campo multivalore

Informazioni sull'impatto dell'inclusione di un campo .Value nell'elenco dei campi

Conteggio, raggruppamento e utilizzo di altre funzioni di aggregazione

Utilizzo di una query di accodamento con un campo multivalore

Utilizzo di una query di aggiornamento con un campo multivalore

Utilizzo di una query di eliminazione con un campo multivalore

Torna all'inizio

Informazioni sui campi multivalore

Si supponga di dover assegnare un'attività a un dipendente o fornitore, ma dopo aver analizzato la situazione si decide che è necessario assegnarla a più persone. In Office Access 2007 è possibile creare un campo multivalore che consente di selezionare le persone da un elenco.

Campi multivalore

Quando si fa clic sulla casella combinata, le caselle di controllo appariranno selezionate a indicare le scelte eseguite. È possibile selezionare o deselezionare le voci nell'elenco e quindi fare clic su OK per confermare le selezioni.

Casella combinata con campi multivalore

Le persone selezionate vengono memorizzate nel campo multivalore e, se visualizzate, sono separate da una virgola per impostazione predefinita.

Campo multivalore con valori separati da una virgola

I campi multivalore sono progettati per semplificare la gestione delle situazioni in cui si desidera selezionare e memorizzare più scelte senza dover creare una struttura di database più avanzata. I campi multivalore risultano inoltre importanti per l'integrazione con Windows SharePoint Services perché anche gli elenchi SharePoint supportano i campi multivalore.

Il motivo per cui in Office Access 2007 è consentito memorizzare più valori in un campo quando la maggior parte dei sistemi di gestione di database relazionali non supporta questa caratteristica è dato dal fatto che il modulo di gestione di database in Office Access 2007 non memorizza effettivamente i valori in un unico campo. Nonostante l'elemento visualizzato e utilizzato sia simile a un campo, i valori effettivi vengono memorizzati in modo indipendente e gestiti in tabelle di sistema nascoste. Il modulo di gestione di database di Access gestisce questo scenario separando automaticamente i dati e recuperandone i valori includendoli in un unico campo.

Dal punto di vista tecnico, un campo multivalore di Access si basa su una relazione molti-a-molti. Si consideri, ad esempio, una tabella di eventi in cui sia necessario assegnare la responsabilità di ogni evento a uno o più dipendenti. Si supponga di creare un campo multivalore denominato "AssegnatoA" per l'assegnazione degli eventi ai dipendenti. La relazione tra eventi e dipendenti è di tipo molti-a-molti, ovvero è possibile assegnare più dipendenti a un evento qualsiasi, ma anche assegnare un dipendente qualsiasi a più eventi.

Torna all'inizio

Introduzione alle query

Lo scopo principale dei database è mettere a disposizione le informazioni. È ad esempio legittimo richiedere a un database ben strutturato di fornire informazioni relative al prodotto che vende di più, al cliente migliore o alle aree in cui non vengono raggiunti gli obiettivi di vendita. Per ottenere le risposte dal database di Access in uso, è possibile creare una query e immettere i criteri necessari. I dati di una query possono provenire da una o più tabelle e, una volta recuperati, possono essere visualizzati e analizzati. Al termine della creazione di una query, è possibile utilizzarla come base per una maschera, un report, un grafico o anche una nuova query.

Office Access 2007 consente di utilizzare campi multivalore in determinate query e in determinati modi. È possibile visualizzare un campo multivalore in una query, visualizzare i singoli valori in un campo multivalore in una query ed eseguire determinate operazioni di aggregazione e query di comando selezionate utilizzando i campi multivalore.

Torna all'inizio

Visualizzazione di campo multivalore in una query

Quando si visualizza un campo multivalore in una query, è necessario decidere se si desidera visualizzare l'intero campo multivalore contenente tutti i valori separati da virgole oppure una riga distinta per ogni valore. Si supponga, ad esempio, di avere una tabella Problemi contenente un campo AssegnatoA che si utilizza per assegnare i problemi alle persone. È possibile creare una query contenente il campo AssegnatoA utilizzando la procedura seguente:

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi su Aggiungi.

  5. Fare clic su Chiudi.

  6. Trascinare i campi che si desidera utilizzare nella griglia di struttura della query. In questo esempio, trascinare il campo Titolo e il campo multivalore denominato AssegnatoA nella griglia della query.

  7. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Il risultato della query avrà l'aspetto illustrato nella figura seguente, dove una colonna visualizza il titolo del problema e la seconda colonna visualizza il campo multivalore:

Risultato della query che visualizza i campi Titolo e AssegnatoA

Quando si crea una query utilizzando la visualizzazione Struttura, viene automaticamente generata l'istruzione SQL (Structured Query Language) corrispondente. SQL è il linguaggio utilizzato in Access per le query. È possibile passare alla visualizzazione SQL per vedere l'istruzione SQL utilizzando la procedura seguente.

  1. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  2. Fare clic su Visualizzazione SQL.

L'istruzione SQL risultante sarà simile alla seguente:

SELECT Issues.Title, 
Issues.AssignedTo
FROM Issues;

Torna all'inizio

Visualizzazione dei singoli valori in un campo multivalore

Si supponga che si desideri visualizzare il campo multivalore AssegnatoA espanso, o appiattito, in modo che ogni nome o valore AssegnatoA venga visualizzato in una riga distinta. A tale scopo, è necessario specificare la proprietà Value tramite l'accodamento della stringa ".Value" ad "AssegnatoA" nella riga Campo, come illustrato di seguito nella griglia della query:

Griglia della query con Titolo e AssegnatoA.Value

Se si specifica AssegnatoA nella riga Campo, quando si esegue la query verranno visualizzati tutti i valori del campo multivalore su una sola riga. Tuttavia, quando si utilizza la proprietà Value, come in AssegnatoA.Value, il campo multivalore verrà visualizzato in formato espanso in modo da mostrare ogni valore su una riga distinta. È possibile creare una query che visualizza i singoli valori utilizzando la procedura seguente.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi fare clic su Aggiungi.

  5. Fare clic su Chiudi.

  6. Trascinare i campi che si desidera utilizzare, in questo esempio il campo multivalore denominato "AssegnatoA.Value", nella griglia della query.

  7. Nel gruppo Risultati della scheda Struttura fare clic su Esegui.

Risultato della query che visualizza il Titolo e i singoli valori AssegnatoA

Quando si crea una query utilizzando la visualizzazione Struttura, verrà automaticamente generata l'istruzione SQL (Structured Query Language) corrispondente. SQL è il linguaggio utilizzato in Access per le query. È possibile passare alla visualizzazione SQL per visualizzare l'istruzione SQL utilizzando la procedura seguente.

  1. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  2. Fare clic su Visualizzazione SQL.

L'istruzione SQL risultante sarà simile alla seguente:

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

Torna all'inizio

Informazioni sul valore associato e sul valore visualizzato in un campo di ricerca

Un campo multivalore è un campo di ricerca, ovvero un campo in una tabella il cui valore viene recuperato da un'altra tabella o query oppure da un elenco di valori. Access ha supportato campi di ricerca a valore singolo per diverse versioni. I campi di ricerca multivalore sono una nuova caratteristica di Office Access 2007. Lo scopo di un campo di ricerca è sostituire la visualizzazione di un numero, ad esempio un ID o un altro valore di chiave esterna, con un'indicazione più significativa, quale un nome. Ad esempio, anziché visualizzare il numero ID di un contatto, è possibile visualizzarne il nome. Il numero ID del contatto è il valore associato che viene recuperato automaticamente da una tabella o query di origine e sostituito con il nome del contatto. Il nome del contatto è il valore visualizzato.

Analogamente a un campo di ricerca a valore singolo che dispone di un valore visualizzato e di un valore associato, un campo di ricerca multivalore dispone di valori visualizzati che appaiono nell'interfaccia utente e di valori associati memorizzati nella tabella. Per ogni voce del campo multivalore viene recuperato un valore visualizzato basato sul valore associato.

Questo significa che in Access viene spesso visualizzato un valore visualizzato recuperato che non corrisponde al valore associato memorizzato nel campo. Riprendendo l'esempio precedente in cui viene utilizzato il campo AssegnatoA, in tale campo è memorizzato un insieme di valori ID dipendente provenienti dalla query Contatti estesi. La query Contatti estesi è stata selezionata come Origine riga al momento della creazione del campo multivalore.

Questi ID dipendente sono i valori associati. Tuttavia, dal momento che il campo AssegnatoA è un campo di ricerca, nel risultato della query verrà visualizzato automaticamente l'insieme dei valori ricercati, in questo caso i nomi dei contatti. I nomi dei contatti sono i valori visualizzati.

Foglio dati con valori visualizzati e foglio dati con valori associati

1. Valori visualizzati.

2. Valori associati.

È possibile visualizzare le proprietà di ricerca per un campo multivalore in visualizzazione Struttura nel modo seguente:

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla tabella in cui è memorizzato il campo multivalore.

  4. Scegliere Visualizzazione Struttura.

  5. Fare clic sul campo multivalore, ad esempio su AssegnatoA.

  6. In Proprietà campo fare clic sulla scheda Ricerca.

Proprietà di un campo di ricerca multivalore

È importante comprendere la differenza tra il valore visualizzato di un campo di ricerca e il valore associato. Per impostazione predefinita, il valore visualizzato viene mostrato automaticamente nella visualizzazione Foglio dati. Tuttavia, il valore memorizzato è il valore associato, utilizzato nei criteri della query e da Access nei join con altre tabelle per impostazione predefinita.

Torna all'inizio

Visualizzare il valore associato in una query

Per impostazione predefinita, il valore visualizzato viene automaticamente mostrato nella visualizzazione Foglio dati. Quando si crea una query, è possibile ignorare questo comportamento in modo che al posto del valore visualizzato venga mostrato il valore associato. A tal fine, è necessario eseguire la procedura seguente:

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi fare clic su Aggiungi.

  5. Fare clic su Chiudi.

  6. Trascinare i campi che si desidera utilizzare nella griglia di struttura della query. In questo esempio, trascinare il campo Titolo e il campo multivalore denominato AssegnatoA.Value nella griglia della query.

  7. Fare clic sul campo AssegnatoA.Value nella griglia della query per attivarlo.

  8. Nel gruppo Mostra/Nascondi della scheda Struttura fare clic su Finestra delle proprietà.

  9. Nella scheda Ricerca della finestra delle proprietà, nella proprietà Visualizza controllo selezionare Casella di testo.

Proprietà Visualizza controllo in struttura query

Quando si modifica la proprietà Visualizza controllo in Casella di testo, si disattiva il normale comportamento della colonna di ricerca in modo da visualizzare il valore associato al posto del valore visualizzato.

Valore associato visualizzato nel risultato della query

Torna all'inizio

Immissione di criteri di query semplici per un campo multivalore

Si supponga che si desideri visualizzare i problemi assegnati a "Kelly Rollin". È possibile immettere i criteri della query nella riga Criteri della griglia della query, ma quando si immettono i criteri per un campo di ricerca, è necessario immettere il valore associato e non il valore visualizzato. In questo caso si determina che il valore associato per Kelly Rollin è 6. Si tratta del valore di chiave primaria corrispondente nella query Contatti estesi per Kelly.

Per creare una query che visualizza i problemi assegnati a Kelly:

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi su Aggiungi.

  5. Fare clic su Chiudi.

  6. Trascinare i campi da utilizzare nella griglia della query. In questo esempio, trascinare Titolo nella prima colonna della griglia e quindi AssegnatoA nella seconda colonna.

  7. Nella scheda della griglia della query, in AssegnatoA, nella riga Criteri immettere 6. Si noti che si immette il valore associato e non il valore visualizzato.

    Griglia della query con criteri in un campo multivalore

  8. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

Quando si esegue la query, il risultato verrà visualizzato in visualizzazione Foglio dati. Si noti che la query restituisce solo le righe in cui è visualizzato "Kelly Rollin" .

Risultato della query in cui il valore AssegnatoA include 6

Quando si crea una query utilizzando la visualizzazione Struttura, verrà automaticamente generata l'istruzione SQL (Structured Query Language) corrispondente. SQL è il linguaggio utilizzato in Access per le query. È possibile passare alla visualizzazione SQL per visualizzare l'istruzione SQL utilizzando la procedura seguente.

  1. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  2. Fare clic su Visualizzazione SQL.

L'istruzione SQL risultante sarà simile alla seguente:

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

Ricerca di testo anziché di numeri ID

Se l'immissione dei numeri ID risulta onerosa e si preferisce immettere il nome "Kelly Rollin" come valore di ricerca, è necessario che il risultato della query includa un campo contenente il nome testuale. In questo modo è possibile eseguire la ricerca di "Kelly Rollin" in tale campo.

Non è possibile utilizzare il campo AssegnatoA.Value in quanto il suo valore associato è un ID e pertanto è necessario immettere un ID per filtrare tale campo.

In questo esempio, il campo del nome del contatto non si trova in una tabella, ma nella query di origine da cui provengono i dati per il campo AssegnatoA. È possibile collegare la tabella o query di origine per il campo multivalore alla tabella che contiene il campo multivalore al fine di includere un campo (in questo esempio il nome contatto) dalla tabella o query di origine nel risultato della query. È possibile quindi eseguire la ricerca in tale campo anziché nel campo multivalore.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi fare clic su Aggiungi.

  5. Nella finestra di dialogo Mostra tabella fare clic sulla scheda Query, quindi sulla query di origine del campo multivalore, in questo esempio "Contatti estesi", e quindi su Aggiungi.

  6. Fare clic su Chiudi.

  7. Trascinare i campi desiderati nella griglia di struttura della query. In questo esempio, trascinare il campo Titolo dalla tabella Problemi nella prima colonna della griglia. Quindi, trascinare Nome contatto dalla query Contatti estesi nella seconda colonna e deselezionare la casella di controllo Mostra. Infine, trascinare AssegnatoA nella terza colonna.

  8. Se non viene visualizzata una linea di join tra il campo ID nella query Contatti estesi e il campo AssegnatoA.Value come mostrato di seguito, fare clic e trascinare dal campo ID nella query Contatti estesi al campo AssegnatoA.Value nella tabella Problemi.

    Verrà visualizzata una linea di join.

    Se vengono visualizzate altre linee di join, rimuoverle facendo clic su ciascuna di esse per evidenziarle e quindi premere CANC.

  9. Nella griglia della query, in Nome contatto, nella riga Criteri immettere "Kelly Rollin".

    Griglia della query con i criteri AssegnatoA contenenti "Kelly Rollin"

  10. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

Quando si esegue la query, il risultato verrà visualizzato in visualizzazione Foglio dati. Si noti che i risultati della query visualizzano solo le righe in cui è presente "Kelly Rollin". Questa tecnica funziona in quanto il join tra l'ID nella tabella o query di origine e il campo AssegnatoA.Value restituisce una riga separata per ogni valore nel campo multivalore. Ogni riga contiene inoltre un campo Nome contatto con il nome completo. Poiché Nome contatto è un campo calcolato e non un campo di ricerca, il valore associato e quello visualizzato non sono presenti. È presente solo un valore, ovvero il nome del contatto. È pertanto possibile immettere il testo di cui trovare la corrispondenza, in questo caso "Kelly Rollin."

Risultato della query con AssegnatoA contenente "Kelly Rollin"

Quando si crea una query utilizzando la visualizzazione Struttura, verrà automaticamente generata l'istruzione SQL (Structured Query Language) corrispondente. SQL è il linguaggio utilizzato in Access per le query. È possibile passare alla visualizzazione SQL per visualizzare l'istruzione SQL utilizzando la procedura seguente.

  1. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  2. Fare clic su Visualizzazione SQL.

L'istruzione SQL risultante sarà simile alla seguente:

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"));

Torna all'inizio

Ricerca di più valori in un campo multivalore

Talvolta è necessario individuare una corrispondenza basata su più valori. Si supponga che si desideri visualizzare i problemi in cui i valori del campo AssegnatoA comprendano sia "Kelly Rollin" sia "Lisa Miller". Il valore associato a Kelly Rollin è 6 e quello associato a Lisa Miller è 10. Per specificare più criteri per un campo multivalore, è possibile utilizzare gli operatori AND e OR.

Per creare la query, utilizzare la procedura seguente.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi fare clic su Aggiungi.

  5. Fare clic su Chiudi.

  6. Trascinare i campi desiderati nella griglia della query. In questo esempio, trascinare Titolo nella prima colonna della griglia e quindi AssegnatoA nella seconda colonna.

  7. Nella griglia della query, in AssegnatoA, nella riga Criteri digitare 6 And 10.

    Query che mostra l'utilizzo di AND in un campo multivalore

  8. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

Quando si esegue la query, il risultato verrà visualizzato in visualizzazione Foglio dati.

Risultato della query che mostra l'utilizzo di AND in un campo multivalore

Il risultato visualizzerà solo i problemi a cui sono assegnate sia Kelly Rollin sia Lisa Miller. Quando si crea una query utilizzando la visualizzazione Struttura, verrà automaticamente generata l'istruzione SQL (Structured Query Language) corrispondente. SQL è il linguaggio utilizzato in Access per le query. È possibile passare alla visualizzazione SQL per visualizzare l'istruzione SQL utilizzando la procedura seguente.

  1. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  2. Fare clic su Visualizzazione SQL.

L'istruzione SQL risultante sarà simile alla seguente:

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

Utilizzo dell'operatore OR al posto dell'operatore AND

Si supponga che si desideri modificare la query affinché vengano elencate le righe in cui è presente "Kelly Rollin" o "Lisa Miller". È possibile modificare l'istruzione SQL in modo da utilizzare l'operatore OR anziché AND. L'istruzione sarà simile alla seguente:

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

Quando si esegue la query, il risultato verrà visualizzato in visualizzazione Foglio dati.

Query che utilizza l'operatore Or con un campo multivalore

Il risultato visualizzerà solo i problemi a cui è assegnata Kelly Rollin o Lisa Miller.

Torna all'inizio

Informazioni sull'impatto dell'inclusione di un campo .Value nell'elenco dei campi

È importante comprendere l'impatto dell'inclusione di un campo .Value nell'elenco delle colonne di output (l'elenco SELECT) nella query. Il primo passaggio dell'elaborazione della query prevede la generazione di un insieme di risultati a cui non viene applicata una clausola WHERE ovvero un filtro. Il filtro viene applicato all'insieme iniziale in un secondo momento. Pertanto, tale insieme di risultati può essere considerato come il risultato generato per primo che viene successivamente ridotto dal filtro nella clausola WHERE. Si consideri l'esempio seguente:

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

Prima dell'applicazione del filtro, l'insieme iniziale dei risultati sarà simile al seguente:

Titolo

AssegnatoA

Problema 1

David Hamilton, Eva Valverde

Problema 2

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

Problema 3

Fernando Caro, Kelly Rollin, Eva Valverde, Tom Michaels

Problema 4

Wei Yu, Lisa Miller

Problema 5

David Hamilton, Kathleen Gail Jensen

Problema 6

Sanjay Jacob, Kelly Rollin

Problema 7

Fernando Caro, Susan Burk

Problema 8

David Hamilton

Problema 9

Kelly Rollin, Lisa Miller

Problema 10

Eva Valverde, Tom Michaels

Il passaggio relativo all'applicazione del filtro prevede a questo punto l'analisi dell'insieme iniziale dei risultati e la selezione delle righe che non contengono David Hamilton, il cui ID è 3:

Titolo

AssegnatoA

Problema 2

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

Problema 3

Fernando Caro, Kelly Rollin, Eva Valverde, Tom Michaels

Problema 4

Wei Yu, Lisa Miller

Problema 6

Sanjay Jacob, Kelly Rollin

Problema 7

Fernando Caro, Susan Burk

Problema 9

Kelly Rollin, Lisa Miller

Problema 10

Eva Valverde, Tom Michaels

Si consideri ora un secondo esempio che include il campo .Value nell'elenco dei campi. Si noti innanzitutto come la presenza del campo .Value modifichi l'insieme iniziale dei risultati prima dell'applicazione del filtro:

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

Prima dell'applicazione del filtro, l'insieme iniziale dei risultati sarà simile al seguente:

Titolo

AssegnatoA

Problema 1

David Hamilton

Problema 1

Eva Valverde

Problema 2

Kathleen Gail Jensen

Problema 2

Kelly Rollin

Problema 2

Lisa Miller

Problema 2

Susan Burk

Problema 3

Eva Valverde

Problema 3

Fernando Caro

Problema 3

Kelly Rollin

Problema 3

Tom Michaels

Problema 4

Lisa Miller

Problema 4

Wei Yu

Problema 5

Kathleen Gail Jensen

Problema 5

Kathleen Gail Jensen

Problema 6

Kelly Rollin

Problema 6

Sanjay Jacob

Problema 7

Fernando Caro

Problema 7

Susan Burk

Problema 8

David Hamilton

Problema 9

Kelly Rollin

Problema 9

Lisa Miller

Problema 10

Tom Michaels

Problema 10

Eva Valverde

A questo punto, il passaggio relativo all'applicazione del filtro prevede l'esame dell'insieme iniziale dei risultati e la selezione soltanto delle righe che non contengono David Hamilton, il cui ID è 3:

Titolo

AssegnatoA.Value

Problema 1

Eva Valverde

Problema 2

Kathleen Gail Jensen

Problema 2

Kelly Rollin

Problema 2

Lisa Miller

Problema 2

Susan Burk

Problema 3

Eva Valverde

Problema 3

Fernando Caro

Problema 3

Kelly Rollin

Problema 3

Tom Michaels

Problema 4

Lisa Miller

Problema 4

Wei Yu

Problema 5

Kathleen Gail Jensen

Problema 6

Kelly Rollin

Problema 6

Sanjay Jacob

Problema 7

Fernando Caro

Problema 7

Susan Burk

Problema 9

Kelly Rollin

Problema 9

Lisa Miller

Problema 10

Tom Michaels

Problema 10

Eva Valverde

La visualizzazione dell'insieme dei risultati prima e dopo l'applicazione del filtro consente di prevedere in modo corretto il risultato della query.

Torna all'inizio

Conteggio, raggruppamento e utilizzo di altre funzioni di aggregazione

È possibile che si desideri eseguire calcoli sui gruppi di valori memorizzati in un campo multivalore, ad esempio il calcolo del numero di problemi assegnati a ogni persona o il numero di persone assegnate a ogni problema. È possibile eseguire questo tipo di calcolo utilizzando una funzione di aggregazione in una query di totalizzazione.

Una funzione di aggregazione esegue il calcolo su un insieme di valori e quindi restituisce un singolo valore. Ad esempio, Somma, Conteggio e Media sono tre funzioni di aggregazione che è possibile utilizzare per calcolare i totali. È possibile calcolare i totali per tutti i record o per gruppi di record. Per eseguire la somma in base al gruppo, è necessario selezionare il campo o i campi in base a cui eseguire il raggruppamento nella griglia della query.

Nella procedura seguente viene illustrato come creare una query per il conteggio del numero di problemi assegnati a ogni persona.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi su Aggiungi.

  5. Fare clic su Chiudi.

  6. Trascinare i campi da utilizzare nella griglia della query. In questo esempio, trascinare AssegnatoA.Value nella prima colonna della griglia e quindi Titolo nella seconda colonna.

  7. Nel gruppo Mostra/Nascondi della scheda Struttura fare clic su Totali.

    Verrà visualizzata la riga Totale nella griglia della query. Raggruppamento verrà visualizzato per impostazione predefinita nella cella Totale sotto tutti i campi della query.

  8. Nella griglia della query, in Titolo, nella riga Totale fare clic su Conteggio.

  9. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

Quando si progetta una query, si specificano i campi da utilizzare per il raggruppamento e per i totali, o calcoli. In questo esempio, AssegnatoA.Value è il campo utilizzato per il raggruppamento e Titolo è il campo utilizzato per il calcolo del totale. Per i campi da utilizzare per il raggruppamento, selezionare Raggruppamento nella riga Totale, mentre per i campi da utilizzare per il calcolo del totale, selezionare un tipo di calcolo, ad esempio Somma o Media. Si noti che quando si utilizza un campo multivalore per il raggruppamento, è necessario utilizzare il campo .Value. In questo esempio, non è possibile utilizzare il campo AssegnatoA per il raggruppamento, ma è necessario utilizzare il campo AssegnatoA.Value. È inoltre necessario utilizzare il campo .Value quando si utilizza un campo multivalore per l'ordinamento.

Nota : Quando si utilizzano un campo multivalore per il raggruppamento e un campo multivalore per l'ordinamento, è necessario utilizzare il campo .Value.

Quando si esegue la query, il risultato verrà visualizzato in visualizzazione Foglio dati.

Query che esegue il conteggio dei problemi assegnati a ogni persona

Per visualizzare l'istruzione SQL per questa query, passare alla visualizzazione SQL utilizzando la procedura seguente.

  1. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  2. Fare clic su Visualizzazione SQL.

L'istruzione SQL risultante sarà simile alla seguente:

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

Si supponga che si desideri conoscere il numero di persone assegnate a ogni problema. È possibile eseguire il raggruppamento per Titolo e selezionare Conteggio come tipo di calcolo per il campo multivalore. Per creare la query, utilizzare la procedura seguente.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic sulla tabella, "Problemi" in questo esempio, contenente il campo multivalore e quindi su Aggiungi.

  5. Fare clic su Chiudi.

  6. Trascinare i campi desiderati nella griglia della query. In questo esempio, trascinare Titolo nella prima colonna e quindi AssegnatoA nella seconda colonna.

  7. Nel gruppo Mostra/Nascondi della scheda Struttura fare clic su Totali.

    Verrà visualizzata la riga Totale nella griglia della query. Raggruppamento verrà visualizzato per impostazione predefinita nella cella Totale sotto il campo Titolo della query. Espressione verrà visualizzato per impostazione predefinita nella cella Totale sotto il campo AssegnatoA. Questo si verifica perché non è possibile eseguire un'operazione Raggruppamento in un campo multivalore, ma soltanto in un campo .Value.

  8. Nella griglia della query, in AssegnatoA, nella riga Totale fare clic su Conteggio.

  9. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

Quando si esegue la query, il risultato verrà visualizzato in visualizzazione Foglio dati.

Risultato della query che mostra il conteggio del numero di persone per problema

Per visualizzare l'istruzione SQL per questa query, passare alla visualizzazione SQL utilizzando la procedura seguente.

  1. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  2. Fare clic su Visualizzazione SQL.

L'istruzione SQL risultante sarà simile alla seguente:

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

Nota : In questa istruzione SQL SELECT, il risultato è lo stesso sia che si utilizzi Count(Issues.AssignedTo) o Count(Issues.AssignedTo.Value).

Torna all'inizio

Utilizzo di una query di accodamento con un campo multivalore

È possibile inserire un singolo valore in un campo multivalore utilizzando una query di inserimento. Ad esempio, si supponga che si desideri aggiungere "Kelly Rollin" al campo multivalore AssegnatoA per un problema. Si determina innanzitutto il valore della chiave primaria per il problema e per il record contatto per Kelly. Si supponga che i valori siano 10 per il problema e 6 per Kelly.

Nella procedura seguente viene illustrato come creare la query.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

    Immagine della barra multifunzione di Access

  4. Nella finestra di dialogo Mostra tabella fare clic su Chiudi.

  5. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  6. Fare clic su Visualizzazione SQL.

  7. Nella visualizzazione SQL digitare l'istruzione SQL seguente:

    INSERT INTO Issues ( AssignedTo.[Value] )
    VALUES (6)
    WHERE ID = 10;
  8. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

    Se viene richiesto di confermare l'accodamento della riga selezionata, fare clic su per inserire la riga o su No per annullare l'operazione.

Kelly sarà ora elencato nel campo AssegnatoA per tale problema. Si tratta dell'unica forma di query di inserimento che funziona con un campo multivalore.

Nota : Si utilizza una query di accodamento per aggiungere record da una tabella a un'altra tabella esistente. In Office Access 2007 non è possibile utilizzare una query di accodamento che fa riferimento a una tabella contenente un campo multivalore. Ad esempio, la query seguente non è valida:

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

Torna all'inizio

Utilizzo di una query di aggiornamento con un campo multivalore

È possibile utilizzare una query di aggiornamento per modificare i valori in record esistenti. Quando si utilizza una query di aggiornamento per aggiornare una tabella che contiene campi multivalore, è possibile modificare un singolo valore di un campo multivalore. Si supponga che si desideri aggiornare il campo multivalore AssegnatoA per un problema specifico, ad esempio per sostituire "Kelly Rollin" con "Lisa Miller". Innanzitutto, si determina il valore della chiave primaria per il problema e per i record contatto per Kelly e Lisa. Si supponga che 8 sia il valore per il problema, 6 il valore per Kelly e 10 il valore per Lisa.

Nella procedura seguente viene illustrato come creare la query.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  4. Nella finestra di dialogo Mostra tabella fare clic su Chiudi.

  5. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  6. Fare clic su Visualizzazione SQL.

  7. Nella visualizzazione SQL digitare la seguente istruzione SQL:

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

    Note : 

    • È consigliabile includere sempre una clausola WHERE che identifica solo i record da aggiornare. In caso contrario, verranno aggiornati record che non si intendeva modificare. Una query di aggiornamento che non contiene una clausola WHERE modifica tutte le righe della tabella.

    • È possibile specificare un valore da modificare.

  8. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

    Se viene richiesto di confermare l'aggiornamento del record, fare clic su per aggiornare la riga o su No per annullare l'operazione.

Lisa Miller sarà ora presente nell'elenco al posto di Kelly Rollin nel campo AssegnatoA per tale problema.

Torna all'inizio

Utilizzo di una query di eliminazione con un campo multivalore

È possibile utilizzare una query di eliminazione per rimuovere i record da una tabella. Quando si utilizza una tabella che contiene un campo multivalore, è possibile utilizzare una query di eliminazione per eliminare i record che contengono un determinato valore in un campo multivalore oppure eliminare un determinato valore da un campo multivalore in tutti i record della tabella.

Si supponga che si desideri rimuovere "Kelly Rollin" dal campo AssegnatoA in tutta la tabella. Si crea una query utilizzando la procedura seguente.

  1. Fare clic sul pulsante Microsoft Office  Pulsante Microsoft Office , quindi su Apri.

  2. Nella finestra di dialogo Apri selezionare e aprire il database.

  3. Nel gruppo Altro della scheda Crea fare clic su Struttura query.

  4. Nella finestra di dialogo Mostra tabella fare clic su Chiudi.

  5. Nel gruppo Risultati della scheda Struttura fare clic sulla freccia sotto Visualizza per visualizzare il menu Visualizza.

  6. Fare clic su Visualizzazione SQL.

  7. Nella visualizzazione SQL digitare l'istruzione SQL seguente:

    DELETE Issues.AssignedTo.Value
    FROM Issues
    WHERE (((Issues.AssignedTo.Value)=6));
  8. Nel gruppo Risultati della scheda Struttura fare clic su Esegui per eseguire la query.

    Se viene richiesto di confermare l'eliminazione dei record, fare clic su per eliminare i record o su No per annullare l'operazione..

La query di esempio seguente non elimina alcun record dalla tabella Problemi, ma elimina un valore dal campo multifunzione AssegnatoA in ogni record in cui è presente il valore. Se si desidera eliminare i record dalla tabella Problemi, non specificare alcun campo dopo la clausola DELETE nell'istruzione SQL. Ad esempio, per eliminare tutti i problemi che includono "Kelly Rollin" tra gli assegnatari, immettere l'istruzione SQL seguente:

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

Nota : Prestare particolare attenzione quando si utilizza una query di eliminazione, in quanto non è possibile recuperare i record una volta eliminati.

Torna all'inizio

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per i tuoi commenti e suggerimenti

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×