Descrizione
Creazione e gestione query (Parte III)
Obiettivi della lezione
Saper creare e gestire query a campi incrociati e di
comando.
Indice lezione
Lezione 15 - Database
15.1
Join tra tabelle;
15.2
Creazione di query
a campi incrociati;
15.3
Creazione di query
di comando;
15.4
Query di
aggiornamento;
15.5
Query di
accodamento;
15.6
Query di
eliminazione;
15.7
Query di creazione
tabella;
15.8
Esercizio.
Dati sulla lezione
|
Versione: |
v1.0 |
|
Tempi: |
1 ora / 60 minuti |
|
Data svolgimento lezione: |
31 Marzo 2003 |
|
Autore dei contenuti: |
Vastapane Marco Attilio – Giuliano Luca |
|
Autore materiali didattici: |
Togni Francesca |
La Teoria
Per limitare i record del dynaset o per la
visualizzazione simultanea di dati provenienti da più tabelle correlate, è possibile
effettuare il join tra tabelle.
Access effettua automaticamente il join tra
tabelle quando esse vengono aggiunte alla finestra della struttura della query:
·
Se è stata
stabilita una relazione tra le tabelle.
·
Se le tabelle
includono campi che hanno lo stesso nome e lo stesso tipo di dato.

Le linee di join compaiono nella finestra della
struttura della query tra le tabelle per mostrare il genere di relazione
esistente tra di loro, i campi interessati e se la relazione impone l’integrità
referenziale. L’operazione di join tra tabelle può essere effettuata in tre
modi: join interno (detto anche equi‑join), join esterno o self
join (join di una tabella con se stessa). In un join interno, i
record delle tabelle oggetto di join devono avere gli stessi valori per i campi
di join. Quando Access effettua automaticamente il join tra tabelle in base ai
nomi di campo e ai tipi di dati, crea sempre un join interno (Vedi la figura
soprastante).
In un join esterno, tutti i record di una
tabella vengono aggiunti al dynaset anche se non esistono valori corrispondenti
nel campo di join dell’altra tabella. I record della seconda tabella vengono
combinati con quelli della prima tabella solo se esistono corrispondenze nel
campo di join.

In un self join, la tabella è oggetto di
join con se stessa. Il self join può essere utile quando un campo della tabella
fa riferimento a un altro campo della stessa tabella.

Per la definizione di qualsiasi tipo di join, per
prima cosa si definisce un join interno:
1.
Iniziare nella
finestra della struttura della query e aggiungere le tabelle con le quali si
desidera effettuare l’operazione di join. Se compaiono automaticamente le linee
di join, l’operazione è conclusa.
2.
Per effettuare
l’operazione di join di tabelle manualmente, trascinare il nome campo di una
tabella su un nome campo contenente lo stesso tipo di dati di un’altra tabella.
Normalmente si trascina una chiave primaria (che compare in grassetto).
3.
Rilasciare il
pulsante del mouse.
Le linee del join interno collegano i campi di
join di ciascuna tabella.
Per modificare il tipo di join tra due tabelle:
1.
Fare clic con il
pulsante destro del mouse, sulla linea di join che si desidera cambiare e
scegliere Proprietà join. Oppure fare doppio clic sulla parte sottile
della linea di join. Compare la finestra di dialogo Proprietà join.

2.
Nella finestra di
dialogo Proprietà join, scegliere l’opzione desiderata. L’opzione 1
produce un join interno. L’opzione 2 crea un join esterno sinistro. L’opzione 3
crea un join esterno destro.
3.
Scegliere OK.
Access aggiornerà l’aspetto della linea di join per rispecchiare la scelta
effettuata dall’utente nel passo 2.
Eliminare un join è semplice:
1.
Fare clic sulla
parte sottile della linea di join che si desidera eliminare, in modo che assuma
l’aspetto grassetto.
2.
Premere il tasto di
cancellazione (Canc).
15.2 - Creazione di query a campi incrociati
Le query a
campi incrociati consentono di ottenere tabelle incrociate dei dati
presentandoli organizzati in righe e colonne.
Nella creazione di una tabella incrociata, si
deve decidere quali campi utilizzare per le intestazioni di riga, per le intestazioni
di colonna e valori di riepilogo e come effettuare il riepilogo dei valori.
Ecco i passi da seguire:
1.
Iniziando dalla
finestra della struttura della query, scegliere le tabelle che si vogliono
utilizzare. Disporre i campi (inclusi i campi calcolati) nella griglia QBE. È
possibile specificare i criteri di ricerca e di ordinamento desiderati.
2. Fare clic sul simbolo di Elenco a discesa
accanto al pulsante Tipo query della barra
degli strumenti e quindi scegliere Query a campi incrociati. Oppure,
scegliere il comando Query - Query a campi incrociati.
3.
Scegliere
Intestazioni riga nella cella Campi incrociati relativa al campo che si
desidera usare per le intestazioni riga. È
possibile designare più campi, ma almeno un campo deve avere Raggruppamento nella sua cella Formula.

4.
Scegliere
Intestazioni colonna nella cella Campi incrociati relativa al campo che si
desidera utilizzare per le intestazioni di colonna. È consentito un solo campo,
il quale deve contenere Raggruppamento nella
sua cella Formula.
5.
Scegliere Valore
nella cella Campi incrociati relativa al campo che si desidera riepilogare.
Quindi, nella cella Formula del campo, scegliere il tipo di riepilogo
desiderato (normalmente Somma o Media). Per questo campo, non si deve scegliere
Raggruppamento.
6.
Per effettuare il
raggruppamento in base a campi aggiuntivi senza visualizzarli nel risultato,
scegliere per questi campi (Non visualizzato) nella cella Campi incrociati a
essi relativa.
7.
Per eseguire la
query, fare clic sul pulsante Visualizzazione Query della barra degli
strumenti.
Access determina automaticamente le intestazioni
di colonna relative ai dati della tabella incrociata e ordina le intestazioni
procedendo lungo le colonne da sinistra a destra.
15.3 - Creazione di query di comando
Le query di comando (o query di azione)
differiscono dalle query discusse finora, per il fatto che modificano o cancellano
dati di una tabella. I quattro tipi di query di comando sono descritti nelle
sezioni che seguono.
Le query di aggiornamento consentono di
effettuare rapidamente modifiche di tutti i record o di gruppi di record. Per
creare una query di aggiornamento:
1.
Nella finestra
della struttura della query, fare clic sul simbolo di Elenco a discesa
accanto al pulsante Tipo query della barra
degli strumenti e poi scegliere Query di aggiornamento. Oppure scegliere
il comando Query - Query di aggiornamento.

2.
Aggiungere le
tabelle, includere i campi che si vogliono aggiornare e i campi che si vogliono
usare per i criteri di selezione, quindi impostare i criteri per la selezione
dei record che si desiderano aggiornare, esattamente come per una query di selezione.
3.
Nella cella Aggiorna
relativa a ciascun campo che si desidera modificare, immettere un nuovo valore
di campo o un’espressione che calcola un nuovo valore.

4.
Per vedere, prima
dell’effettivo aggiornamento, quali record verranno aggiornati, fare clic sul
pulsante Visualizzazione query.
5.
Correggere i
criteri della query e visualizzare i risultati fino a ottenere la selezione dei
record voluti.
6.
Per l’esecuzione
della query di aggiornamento, tornare alla finestra della struttura della query
e fare clic sul pulsante Esegui della barra degli strumenti oppure scegliere
il comando Query - Esegui.
7.
Quando il programma
comunica il numero delle righe che verranno aggiornate, scegliere Sì se
si desidera procedere o No per annullare l’operazione.

Una query
di accodamento copia alcuni o tutti i record di una tabella (la tabella di origine) in fondo a un’altra
tabella (la tabella di destinazione). È un’operazione
utile quando per la gestione dei dati si usano tabelle separate che hanno
strutture simili. Per creare una query di accodamento:
1.
Nella finestra
della struttura della query, fare clic sul simbolo di Elenco a discesa
accanto al pulsante Visualizzazione query della barra degli strumenti
e scegliere Query di accodamento. Oppure. scegliere il comando Query
- Query di accodamento. Compare la finestra di dialogo Accodamento.

2.
Se la tabella si
trova nello stesso database, saltare al passo 3. Se la tabella da accodare si
trova in un database diverso, scegliere l’opzione Altro database,
premere il tasto Tab e nella casella Nome file, specificare la
posizione di directory e il nome del database.
3.
Nell’elenco a
discesa Nome tabella, scegliere la tabella di destinazione e fare clic
su OK. Aggiungere le tabelle, includere i campi che si desiderano
copiare e i campi da usare per i criteri di selezione; quindi impostare i
criteri per la selezione dei record che si vogliono accodare nella finestra
della struttura della query, proprio come per una Query di selezione.

4.
Per un’anteprima
delle modifiche, fare clic sul pulsante Visualizzazione query della barra degli
strumenti (oppure scegliere Visualizza - Visualizzazione foglio dati).
Correggere la query e visualizzare il risultato fino a ottenere la selezione
dei record desiderati.
5.
Per l’esecuzione
della Query di accodamento, portarsi alla finestra della struttura della query
e fare clic sul pulsante Esegui
della barra degli strumenti oppure scegliere il
comando Query - Esegui.
6.
Quando il programma
visualizza il numero dei record che verranno accodati, scegliere Si se
si vuole procedere oppure No per annullare l’operazione.

Le query di
eliminazione consentono, in un colpo solo, di eliminare un gruppo di record
che corrispondono a specifici criteri di ricerca.
Per prima cosa, verrà presentato il caso più
semplice: l’eliminazione di record da una tabella singola o da più tabelle legate
da una relazione Uno a uno. Ecco i passi da seguire:
1.
Nella finestra
della struttura della query, fare clic sul simbolo di Elenco a discesa accanto
al pulsante Visualizzazione Query della barra degli strumenti. Oppure
scegliere il comando Query - Query di eliminazione.

2.
Aggiungere le
tabelle, includere i campi da usare per la selezione di record specifici;
quindi impostare i criteri per la selezione dei record che si vogliono eliminare,
proprio come per una Query di selezione.
3.
Se la query si
effettua su più tabelle, fare doppio clic sull’asterisco (*) per ciascuna
tabella dalla quale si vogliono eliminare record.

4.
Per un’anteprima
delle modifiche, fare clic sul pulsante Visualizzazione Query della
barra degli strumenti (oppure, scegliere il comando Visualizza - Visualizzazione
query).
5.
Correggere la query
e visualizzarne il risultato fino a ottenere la selezione dei record che si
vogliono eliminare.
6.
Per l’esecuzione
della Query di eliminazione, portarsi alla finestra della struttura
della query e fare clic sul pulsante Esegui della barra degli strumenti
oppure scegliere il comando Esegui.
7.
Quando il programma
visualizza il numero dei record che verranno eliminati, scegliere Sì se
si vuole procedere oppure No per annullare l’operazione.

Se la cancellazione di record in successione non è stata
impostata e si desidera eliminare record da tabelle legate da una relazione di
tipo Uno a molti, si devono eseguire due query di eliminazione, come illustrato
qui di seguito:
1.
Nella finestra
della struttura della query, fare clic sul simbolo di Elenco a discesa
accanto al pulsante Tipo query della barra degli strumenti e scegliere Query
di eliminazione. Oppure, scegliere il comando Query - Query di eliminazione.
2.
Aggiungere le
tabelle che si vogliono usare nella query.
3.
Nella tabella dal
lato “Uno” della relazione, trascinare il campo o i campi che si desiderano
usare per i criteri di selezione e definire i criteri come di consueto.
4.
Nella tabella (o
tabelle) dal lato "Molti" della relazione, fare doppio clic
sull’asterisco (*).

5.
Visualizzare
un’anteprima dei risultati della query ed eseguirla nel modo consueto. Essa si
occupa della cancellazione dei record dal lato “Molti” della relazione.
6.
Tornare alla
finestra della struttura della query ed eliminare dalla finestra le eventuali
tabelle dal lato “Molti” della relazione.
7.
Visualizzare
un’anteprima dei risultati della query ed eseguirla di nuovo.
15.7 - Query di creazione tabella
Una Query
di creazione tabella crea una tabella completamente nuova utilizzando i
risultati di una query. Per crearla:
1.
Nella finestra
della struttura della query, fare clic sul simbolo di Elenco a discesa accanto
al pulsante Visualizzazione query della barra degli strumenti. Oppure
scegliere il comando Query - Query di creazione tabella.

2.
Se la tabella che
si vuole creare si trova nello stesso database, saltare al passo 3. Se la
tabella si trova in un database diverso, scegliere l’opzione Un altro
database, premere il tasto Tab e specificare la posizione di directory
e il nome del database.

3.
Nell’elenco a
discesa Nome tabella, scegliere la tabella di destinazione e fare clic
su OK. Se si sceglie il nome di una tabella esistente, Access sovrascrive la tabella.
4.
Aggiungere tabelle
e campi; quindi impostare i criteri per la selezione dei record e dei campi per
la nuova tabella, proprio come per una Query di selezione. Per
un’anteprima del risultato delle modifiche effettuate, fare clic sul pulsante Visualizzazione
Query della barra degli strumenti. Correggere la query e visualizzare il
risultato fino a ottenere la selezione dei record che si vogliono includere
nella nuova tabella.

5.
Per eseguire la
query di creazione tabella, portarsi nella finestra della struttura della query
e fare clic sul pulsante Esegui della barra degli strumenti. Se nel
passo 3 si è scelta una tabella esistente, il programma chiederà se si voglia
continuare.
6.
Scegliere Sì
se si desidera eliminare la vecchia tabella e continuare oppure No per
tornare alla finestra della struttura della query senza cancellare la tabella.

La Pratica
Creare la seguente tabella
Nome: MAGAZZINO
Codice: Testo 10 caratteri Chiave
Descrizione: Testo 150 caratteri
Prezzo Valuta Euro 2 decimali
Quantità Numerico
LimiteScorta Numerico
Dati i seguenti valori:

Creare le seguenti query che permettano di:
1) Creare una query in visualizzazione struttura e inserire la tabella Magazzino. Portare sulla griglia i campi “Codice” e “Quantità”.
Posizionarsi sul pulsante Tipo
query
e scegliere Query
di aggiornamento, dopo di che scrivere sulla riga dei Criteri sotto
il campo “Codice” [Inserire il codice:], mentre nella cella Aggiorna a:
del campo “Quantità” [Quantità]-[Inserire la quantità da scaricare].

All’esecuzione della query verranno richieste, in ordine, la quantità da scaricare ed il codice del prodotto.
Salvare la query come “Scarico”
2) Creare una query in visualizzazione struttura e aggiungere la tabella “MAGAZZINO”. Selezionare il campo “Prezzo” e dal pulsante Tipo Query scegliere la voce Query di aggiornamento.
Scrivere nella cella Aggiorna a: [Prezzo]*1,2.

All’esecuzione della query verrà notificato l’aggiornamento di tutti i record presenti. Visualizzando il foglio dati risultante si otterrà:

Salvare la stessa come “Maggiorazione”.
3) Creare una query in visualizzazione struttura e aggiungere la tabella “MAGAZZINO”. Selezionare i campi “Codice”, “Descrizione” e “Quantità”.
Posizionarsi nella cella Criteri in corrispondenza col campo “Quantità” e scrivere <[LimiteScorta].

All’esecuzione della query (se non si sono apportate notevoli modifiche utilizzando la query “Scarico”) si otterranno i seguenti valori:

4) Creare una query in visualizzazione struttura Scegliere dal pulsante Tipo Query l’opzione Query di accoramento, nella finestra di dialogo che apparirà scegliere la tabella a cui aggiungere i dati, nel nostro esempio si sceglierà “MAGAZZINO”.
Scrivere nella prima cella Campo [Inserire il codice], e in corrispondenza nella cella Accoda a scegliere il campo “CODICE”.
Procedere nel medesimo modo per gli altri campi fino ad ottenere la seguente situazione:


Eseguendo la query verranno richiesti tutti i dati. Salvare la query come “Inserimento”
5) Creare una query in visualizzazione struttura ed inserire la tabella “MAGAZZINO”. Scegliere dal pulsante Tipo Query l’opzione Query di eliminazione.
Selezionare l’asterisco e il campo “CODICE” e portarli sulla griglia; in corrispondenza della cella Criteri del campo Codice scrivere: [Inserire il codice:]

All’esecuzione della query verrà richiesto il codice. Un finestra di dialogo avvertirà quanti record con quel codice saranno eliminati. Selezionando Sì il dato verrà irrimediabilmente perso.
6) Creare una copia della tabella “MAGAZZINO” duplicandone solo la struttura e chiamarla “PrezziAlti”.

Creare una query in visualizzazione struttura e aggiungere la tabella “MAGAZZINO”. Selezionare tutti i campi e trascinarli sulla griglia. Scegliere dal pulsante Tipo Query l’opzione Query di creazione tabella, nella finestra di dialogo che apparirà scegliere la voce Nome tabella e digitare “PrezziAlti”.

Impostare la condizione >200 nella cella Criteri del campo “Prezzo”.

Eseguendo la query una finestra di dialogo avviserà che tutti i dati contenuti nella tabella “PrezziAlti” saranno persi. Se si sceglie Sì un’altra finestra avviserà del numero di dati che verranno copiati. Cliccare OK. Salvare la query come “Spostamento” e controllare i dati contenuti nella tabella “PrezziAlti”. Riferendosi alla tabella originale i dati ottenuti dovrebbero essere i seguenti:

Non è obbligatorio inviare l’esercizio al tutor.
Feedback
Per
chiarimenti, si prega di lasciare la domanda direttamente sul Forum della
piattaforma Maestra.