In questo articolo su Microsoft Office 2010, vedremo come usare Access 2010, per eseguire delle query in modalità struttura. Per farlo useremo un esempio di una query che mostri i nomi e i cognomi degli studenti dei docenti, dei dipendenti e i loro dati in una ipotetica scuola.
Utilizzare la visualizzazione struttura
Per mostrarvi un esempio di query in visualizzazione struttura ne realizzeremo una che mostri i nomi e i cognomi degli studenti e i loro numeri di telefono, con l’indicazione del tipo.
Sul sito del libro da cui è tratto questo articolo, potete scaricare gratuitamente gli esempi per seguire questo articolo.
Nella scheda Crea della barra multifunzione, nel gruppo Query, premete il pulsante Struttura query. Access vi mostrerà la struttura della query vuota e la finestra Mostra tabella, visibile in figura 1.
Attraverso la finestra Mostra tabella aggiungeremo alla struttura le tabelle che ci occorrono per creare la query.
Selezionate la tabella Studenti e premete Aggiungi, poi ripetete la procedura per la tabella Telefoni. Premete Chiudi per chiudere la finestra. Ora le tabelle Studenti e Telefoni compaiono nella parte alta della griglia.
Selezionate il campo Cognome dalla tabella Studenti e trascinatelo nella prima colonna della finestra, come visibile in figura 2.
Nota
Per inserire un campo nella prima colonna libera della griglia QBE, potete anche fare doppio clic sul suo nome.
Selezionate il campo Nome dalla tabella Studenti e trascinatelo nella seconda colonna della griglia.
Selezionate il campo Numero nella tabella Telefoni e trascinatelo nella terza colonna della griglia. Nella colonna accanto trascinate il campo Tipo.
La query è terminata. La figura 3 mostra come dovrebbe apparire la struttura della query.
Ordinare i dati in una query
Oltre a selezionarli da più tabelle, in una query si possono anche ordinare i dati. Il nostro elenco telefonico sarà più facile da usare se gli studenti saranno ordinati alfabeticamente.
Nella griglia, in prossimità del campo Cognome, aprite l’elenco a discesa in corrispondenza della voce Ordinamento e scegliete Crescente. fate la stessa cosa in corrispondenza del campo Nome, come visibile in figura 4.
L’ordinamento per cognome verrà applicato prima, dato che la colonna del cognome si trova più a sinistra di quella del nome: gli studenti verranno ordinati per cognome e, in caso di cognomi uguali, verrà posto prima lo studente con il nome con ordine alfabetico più alto.
Passate ora in visualizzazione Foglio dati, per vedere il risultato della query, mostrato in figura 5.
Premete il pulsante Salva sulla barra di accesso rapido. Access vi chiederà quale nome volete assegnare alla query. Elenco telefonico studenti andrà benissimo.
Query con criteri
Le query non servono solo a selezionare dati provenienti da più tabelle e/o a ordinarli, ma permettono anche di filtrare i dati in base a determinati criteri. Di seguito vi proporremo alcuni esempi.
Escludere da una query i record con un valore nullo in un campo
Come primo esempio, creeremo una query con l’elenco dei docenti che hanno un sito Web, ossia ci occorrono i record in cui il campo Sito non è nullo. Create una query sulla base della tabella Docenti e inserite i campi Cognome, Nome e Sito.
Nella casella Criteri, al di sotto del campo Sito, scrivete Is not null, come mostrato in figura 6, ossia non contiene un valore nullo. Questo vuol dire che nella query saranno inseriti solo i docenti in cui il campo Sito contiene un valore.
Passate in visualizzazione Foglio dati per verificare il risultato, mostrato in figura 7.
Salvate la query con il nome Siti dei docenti.
Selezionare i record che presentano un determinato valore in un campo
Ora creeremo una query con l’elenco dei docenti dipendenti. Create una query sulla base della tabella Docenti e inserite i campi Cognome, Nome e Dipendente. In corrispondenza del campo Dipendente, nella cella Criteri, scrivete Vero. Nella query non occorre mostrare il campo Dipendente, che ci è servito solo per impostare il criterio, quindi deselezionate la casella di controllo Mostra in corrispondenza del campo. La figura 8 mostra la struttura della query.
Salvate la query con il nome Elenco docenti dipendenti.
Selezionare i record in base a una stringa di caratteri
È possibile selezionare campi che contengano determinate stringhe di caratteri.
Come esempio, creeremo una query con l’elenco degli studenti che abitano a Pavia. Create una query sulla base della tabella Studenti e inserite i campi Cognome, Nome, Indirizzo, CAP e Città.
Nella cella Criteri, al di sotto del campo Città, scrivete Pavia, come mostrato in figura 9.
Nota
Notate che nella figura 9 Access ha aggiunto delle virgolette prima e dopo la parola Pavia. Le virgolette servono ad Access per indicare che Pavia è un testo.
Salvate la query con il nome Studenti di Pavia.
Escludere dei record (l’operatore Not)
Con l’operatore Not è possibile realizzare delle query che escludano i record in cui compare un determinato valore: per esempio, nella query realizzata nell’esercizio precedente vogliamo filtrare tutti gli studenti che non sono di Pavia, come visibile nella figura 10.
Selezionare i record in base a un intervallo di date presenti in un campo
In una query è possibile filtrare i dati in base a un intervallo di numeri o date. Per identificare un intervallo in un’espressione è possibile utilizzare l’operatore Between… and oppure gli operatori di confronto (<, >, <>, <=, >=). Nella tabella seguente sono descritti alcuni esempi di operatori utilizzati nelle espressioni.
Espressione | Significato |
>234 | Numeri maggiori di 234 |
Between #2/2/05# And #1/12/05# | Date comprese tra 2/2/05 e 1/12/05 |
<1200,45 | Numeri minori di 1200,45 |
>=Leonardo | Tutti i nomi da Leonardo alla fine dell’alfabeto |
Nota
Il simbolo cancelletto (#) indica ad Access di trattare i valori posti tra cancelletti come date. Se le date non vengono racchiuse tra cancelletti, Access potrebbe trattarle come testo o numeri (il simbolo / indica la divisione).
Per provare l’uso di criteri con un intervallo realizzeremo una query con l’elenco degli studenti nati nel 1980 (cioè tra il primo gennaio 1980 e il 31 dicembre dello stesso anno). Create una query sulla base della tabella Studenti e inserite i campi Cognome (impostate per questo campo l’ordinamento alfabetico), Nome e Data di nascita. Nella cella Criteri al di sotto del campo Data di nascita scrivete Between #01/01/1980# And #31/12/1980#, come mostrato nella figura 11.
Se non avete spazio per scrivere tutto il criterio avete due possibilità: allargare la colonna, come nella figura 11 (basta porre il puntatore del mouse all’incrocio tra l’intestazione della colonna che vi interessa e quella che segue e poi trascinare) o utilizzare la finestra Zoom, visibile in figura 12.
Per visualizzarla fate clic nel campo da ingrandire col tasto destro del mouse e, dal relativo menu contestuale, scegliete Zoom. Quando avete finito di usare questa finestra, premete il pulsante OK per chiuderla.
Nota
Per ingrandire il carattere usato nella finestra Zoom (l’operazione non ha alcun effetto sui risultati della query), premete il pulsante Carattere. Visualizzerete la finestra Carattere, che potete usare per modificare il carattere del testo della finestra.
La figura 13 mostra il risultato della query in visualizzazione Foglio dati.
Salvate la query con il nome Studenti del 1980.
Usare i caratteri jolly
Nei criteri basati su stringhe di testo si possono usare i caratteri jolly punto interrogativo (?) e asterisco(*). Quando si specifica nelle espressioni, un punto interrogativo rappresenta un singolo carattere che si trova in quella posizione; un asterisco rappresenta, invece, un numero qualsiasi di caratteri che si trovano in quella posizione. Nella tabella seguente sono mostrate alcune possibilità d’uso dei caratteri jolly.
Se viene digitata questa espressione… | …verranno ricercati i seguenti valori |
?esta | Testa, Sesta |
Ma*o | Mauro, Mario |
*ni | Veroni, Delfini |
*st* | Testa, Giusti, Sesta |
*/*/64 | Tutte le date del 1964 |
Come esempio d’uso dei caratteri jolly, realizzeremo una query con l’elenco dei docenti il cui cognome inizia per A.
Create una query sulla base della tabella Docenti e inserite i campi Cognome e Nome. Nella cella criteri al di sotto del campo Cognome scrivete A*, come mostrato in figura 14. Access lo trasformerà in Like “A*”.
Selezionare record che soddisfano più criteri
È possibile selezionare dei record che soddisfano più di un criterio. La procedura è diversa a seconda che vogliamo applicare diversi criteri allo stesso campo o a campi diversi.
Una query che soddisfa più criteri per lo stesso campo (And e Or)
Per questo tipo di query bisogna ricorrere agli operatori And e Or.
L’operatore Or si usa quando si vuole che un campo soddisfi un criterio oppure un altro. Per esempio, se vogliamo selezionare gli studenti che hanno come cognome Veroni o Testa, dovremo impostare come criterio Like “Veroni” or “Testa”.
L’operatore And, invece, si usa quando si vuole che un campo soddisfi due criteri contemporaneamente. Per esempio, se si vuole che compaiano solo gli indirizzi email che iniziano con G e terminano con @iol.it, si dovrà impostare come criterio Like “g*” and *@iol.it.
La figura 15 mostra una query che seleziona i record relativi ai docenti il cui cognome comincia per A o B.
Una query che soddisfa criteri diversi in diversi campi
È possibile impostare criteri per più campi. Per esempio, se si vogliono visualizzare i record relativi agli studenti il cui cognome inizia per G e la cui e-mail finisce per @tin.it, si dovrà scrivere Like “g*” nella cella Criteri per il campo Cognome e Like *@tin.it nella cella Criteri per il campo E_mail.
Se invece si vogliono visualizzare i record relativi a studenti che hanno il nome che inizia per L oppure il cognome che inizia per P si deve scrivere like “L*” nella cella Criteri del campo Nome e Like “P*” nella cella Oppure del campo Cognome.
La figura 16 mostra una query che elenca gli studenti che hanno un numero di fax o una e-mail, ossia soddisfano almeno uno dei criteri impostati.
La figura 17 mostra una query che elenca gli studenti che nella materia Html hanno un voto maggiore di 6, cioè devono avere un voto in Html e questo deve essere superiore a 6. In questo caso i record vengono selezionati se soddisfano entrambi i criteri impostati.
Query su un campo di ricerca a valore multiplo
Per concludere questo articolo sulla struttura delle query, vogliamo precisare che la creazione di una query che coinvolge campi a valore multiplo non è diversa dalla creazione di query che usano tabelle standard.
Nota
Questo non avveniva in Access 2007, dove occorreva lavorare un po’ per far funzionare queste query.
Per fare qualche prova, creeremo una query che elenchi tutte le materie disponibili e i docenti che le insegnano. Ricordate che, nella tabella Materie, il campo IDDocente è un campo multi valore.
Avviate la creazione di una query in visualizzazione Struttura e inserite al suo interno le tabelle Docenti e Materie. Inserite i campi Cognome e Nome della tabella Docenti e il campo Materia della tabella Materie, come mostrato in figura 18.
Non rimane che eseguire la query per osservarne i risultati, visibili in figura 19.
Notate che l’unica differenza rispetto alle query che usano campi non multi valore è che i nomi delle colonne, nel risultato della query, mostrano anche il nome della tabella da cui sono tratti i campi, cosa che normalmente non avviene.
Per “correggere” questa situazione, potete aggiungere un’etichetta alle proprietà di ogni campo della query.
Nota
Si tratta di una procedura che può essere applicata anche ai campi delle query tradizionali, se se ne vuole cambiare il nome nel risultato della query.
Tornate alla visualizzazione Struttura della query e fate clic nel campo Cognome. Se sulla destra non vedete la Finestra delle proprietà, premete il pulsante Finestra delle proprietà nel gruppo Mostra/nascondi della scheda Progettazione, negli Strumenti query.
Nella scheda Generale trovate la proprietà Etichetta e assegnatele il valore Cognome, come mostrato nella figura 20. Fate la stessa cosa con le altre colonne.
Autore: Alessandra Salvaggio – Tratto da: Lavorare con Access 2010 – Edizioni FAG Milano