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    

15.1  -  Join tra tabelle

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.

 

15.4  -  Query di aggiornamento

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 se si desidera procedere o No per annullare l’operazione.

 

15.5  -  Query di accodamento

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.

 

 

15.6  -  Query di eliminazione

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 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 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

15.8  -  Esercizio

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. Scaricare una quantità a discrezione dell’utente da un determinato prodotto, dopo averne digitato il codice;
  2. Modificare il prezzo di ogni prodotto rincarandolo del 20%;
  3. Determinare quali pezzi sono sotto scorta;
  4. Accodare un nuovo pezzo;
  5. Cancellare un determinato prodotto, dopo averne digitato il codice;
  6. Isolare tutti i prodotti con costo maggiore di 200 € ponendoli in una nuova tabella di nome PrezziAlti

 

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 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 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.