Come creare una query in Microsoft Access: tutorial pratico

Per creare access query in modo corretto devi partire dalla domanda che vuoi porre ai dati, scegliere le tabelle o query di origine, aggiungere i campi necessari e impostare criteri, ordinamento e join. In Microsoft Access puoi creare una query con la Creazione guidata Query, con Visualizzazione Struttura oppure scrivendo direttamente SQL. Per chi inizia, la query di selezione è il punto di partenza più importante perché legge i dati senza modificarli.

Questa guida mostra il procedimento completo con esempi reali su Clienti, Ordini e Prodotti. Vedremo come evitare i problemi più comuni, come usare criteri e campi calcolati, come lavorare con più tabelle e come passare alla visualizzazione SQL. Le procedure sono valide per Access per Microsoft 365 e Access 2024 su Windows.

Indice

  1. Che cos’è una query
  2. Query di selezione
  3. Creazione guidata
  4. Visualizzazione Struttura
  5. Aggiungere campi
  6. Criteri e ordinamento
  7. Query con più tabelle
  8. Campi calcolati
  9. SQL
  10. Salvare e riutilizzare query
  11. Troubleshooting
  12. FAQ

Che cos’è una query in Access

Una query è una richiesta al database. Può selezionare righe, scegliere colonne, ordinare, filtrare, combinare più tabelle, calcolare valori o eseguire operazioni sui dati. La query non deve essere confusa con la tabella: la tabella memorizza i record, mentre la query definisce come leggerli o elaborarli.

Per esempio, la tabella Ordini può contenere tutti gli ordini di molti anni. Una query può mostrare soltanto quelli dell’ultimo mese, solo quelli di un determinato cliente oppure il totale venduto per categoria. Salvando la query, salvi la definizione della richiesta, non una copia statica dei risultati.

La query di selezione è il punto di partenza

Microsoft Support descrive la query di selezione come lo strumento per recuperare dati specifici da una o più origini. Puoi usare tabelle e altre query di selezione come origini. Una query di selezione non modifica i record e per questo è il modo più sicuro per imparare.

Le query di comando, come aggiornamento, eliminazione, accodamento e creazione tabella, possono invece modificare molti record. Prima di usarle è consigliabile costruire e controllare la corrispondente query di selezione.

Metodo 1: Creazione guidata Query

Vai su Crea > Creazione guidata Query. Scegli Query semplice e seleziona la tabella o query di origine. Sposta i campi desiderati nell’elenco dei campi selezionati e completa la procedura. Access può aprire direttamente il risultato in Foglio dati oppure permetterti di modificare la query in Visualizzazione Struttura.

Il wizard è rapido e aiuta a evitare alcuni errori iniziali. Offre però meno controllo. Quando devi inserire criteri complessi, join personalizzati, espressioni o parametri, Visualizzazione Struttura è più flessibile.

Metodo 2: Visualizzazione Struttura

Vai su Crea > Struttura query. Aggiungi la tabella Clienti. Nella parte superiore vedi i campi disponibili; nella griglia inferiore costruisci l’output. Trascina ClienteID, RagioneSociale, Città ed Email nelle colonne della griglia.

Premi Esegui o passa a Visualizzazione Foglio dati per vedere i risultati. A questo punto la query mostra i campi scelti per tutti i clienti. Hai già creato una query di selezione valida.

Come scegliere i campi

Non aggiungere automaticamente tutti i campi. Se la domanda richiede soltanto RagioneSociale e Città, seleziona quelli. Query più strette sono più leggibili e, soprattutto con tabelle collegate, possono trasferire meno dati.

Puoi aggiungere un campo alla griglia e deselezionare Mostra. È utile quando vuoi usare quel campo come criterio o ordinamento ma non desideri visualizzarlo nell’output.

Aggiungere un criterio

Per mostrare solo clienti di Roma, inserisci nella riga Criteri sotto Città:

Roma

Access può aggiungere automaticamente le virgolette nella visualizzazione SQL. Eseguendo la query vedrai solo i record che soddisfano la condizione.

Criteri numerici

In una query Prodotti puoi mostrare solo prezzi superiori a 100 inserendo:

>100

Per un intervallo puoi usare:

Between 100 And 500

I criteri devono essere coerenti con il tipo di dati. Non trattare numeri come testi e controlla i separatori locali quando scrivi espressioni direttamente nell’interfaccia.

Criteri sulle date

Per filtrare le date puoi usare espressioni relative come Date() oppure intervalli. Un esempio concettuale per gli ordini dall’inizio dell’anno è:

>=DateSerial(Year(Date()),1,1)

Usare funzioni rende la query riutilizzabile. Invece di cambiare manualmente la data ogni anno, il criterio si aggiorna in base alla data corrente.

Ordinare i risultati

Nella riga Ordinamento scegli Crescente o Decrescente. Per gli ordini puoi ordinare DataOrdine in modo decrescente per visualizzare i più recenti per primi. Se imposti più ordinamenti, l’ordine delle colonne nella griglia contribuisce alla priorità.

In SQL l’equivalente è ORDER BY. Per esempio:

SELECT OrdineID, DataOrdine, Totale FROM Ordini ORDER BY DataOrdine DESC;

Query su più tabelle

Se vuoi mostrare il nome del cliente insieme agli ordini, aggiungi Clienti e Ordini. Se esiste una relazione tra ClienteID, Access normalmente visualizza un join. Trascina RagioneSociale da Clienti e OrdineID, DataOrdine e Totale da Ordini.

Microsoft Support sottolinea l’importanza di collegare le origini. Una tabella non collegata può generare un prodotto cartesiano, moltiplicando le righe. Controlla sempre le linee di join.

Approfondisci con come creare join tra tabelle, come evitare duplicazioni con relazioni e la categoria Guide Access.

SQL di una query multi-tabella

SELECT C.RagioneSociale, O.OrdineID, O.DataOrdine, O.Totale FROM Clienti AS C INNER JOIN Ordini AS O ON C.ClienteID=O.ClienteID ORDER BY O.DataOrdine DESC;

Visualizzazione Struttura e Visualizzazione SQL sono due modi di vedere la stessa query. Access traduce molte operazioni della griglia in SQL e viceversa. Imparare a leggere SQL aiuta a capire cosa sta realmente facendo il database.

Modificare il tipo di join

Fai doppio clic sulla linea tra le tabelle. Access mostra le proprietà del join. Puoi scegliere di includere solo le righe con corrispondenza oppure tutte le righe di una tabella e soltanto quelle corrispondenti dell’altra. Quest’ultima configurazione corrisponde a un outer join, tipicamente LEFT JOIN.

Per trovare clienti senza ordini, per esempio, puoi usare Clienti LEFT JOIN Ordini e un criterio Is Null sulla chiave di Ordini.

Campi calcolati

Una query può creare valori che non sono memorizzati nella tabella. Se DettagliOrdine contiene Quantita e PrezzoUnitario, aggiungi una colonna:

TotaleRiga: [Quantita]*[PrezzoUnitario]

Il calcolo viene eseguito quando la query gira. Evita di memorizzare risultati facilmente ricalcolabili se questo introduce ridondanza, salvo che esistano requisiti storici o prestazionali specifici.

Funzioni nelle espressioni

Puoi usare funzioni come IIf, Nz, Format, Date, Year, Month, Left, InStr e molte altre. Usa però espressioni leggibili. Quando una formula diventa troppo complessa, valuta una query intermedia o una funzione VBA ben documentata.

Un esempio semplice:

StatoImporto: IIf([Totale]>1000,"Alto","Normale")

Query parametro

Una query parametro chiede un valore all’utente al momento dell’esecuzione. Nel criterio puoi inserire un testo tra parentesi quadre, per esempio:

[Inserisci la città:]

Per progetti più robusti è spesso meglio leggere il parametro da un controllo di una maschera, così puoi validare l’input e offrire combo o calendari.

Definire i tipi dei parametri

Se un parametro riguarda date o numeri, dichiararne il tipo evita interpretazioni sbagliate. In Visualizzazione Struttura puoi usare il comando Parametri e specificare il tipo. In SQL puoi usare PARAMETERS. Questo è particolarmente utile quando il parametro entra in espressioni o confronti complessi.

Query totali

Attiva Totali nella barra Struttura query. Access aggiunge la riga Totale. Puoi raggruppare per Città e contare i clienti, oppure raggruppare per ClienteID e sommare gli importi degli ordini.

SQL equivalente:

SELECT ClienteID, Sum(Totale) AS TotaleCliente FROM Ordini GROUP BY ClienteID;

Quando aggiungi criteri a query aggregate, distingui tra condizioni applicate prima del raggruppamento e condizioni applicate ai risultati aggregati.

Salvare la query

Premi Ctrl+S e assegna un nome descrittivo, per esempio qryOrdiniRecenti o qryVenditePerCliente. Una convenzione coerente rende più facile distinguere query da tabelle, maschere e report.

La query salvata può diventare origine record di maschere e report oppure origine di un’altra query. Evita però catene inutilmente profonde, perché diventano difficili da manutenere.

Query come origine di una maschera

Una maschera può basarsi su una query che presenta solo i campi e i record necessari. Questo è utile per filtrare dati, combinare anagrafiche e transazioni o creare campi calcolati. Non tutte le query sono aggiornabili: aggregazioni, DISTINCT e alcuni join possono impedire la modifica dei record.

Se una maschera deve consentire inserimento e modifica, testa l’aggiornabilità della query prima di costruire tutta l’interfaccia.

Query come origine di un report

I report beneficiano particolarmente delle query. Puoi preparare un dataset pulito con campi calcolati e criteri, quindi concentrarti nel report su raggruppamenti e presentazione. Per report periodici, usa parametri o controlli di maschera per definire l’intervallo.

Evita di inserire tutta la logica sia nella query sia nel report. Mantieni una separazione comprensibile tra estrazione dei dati e layout.

Visualizzazione SQL

Apri la query e passa a Visualizzazione SQL per leggere l’istruzione generata. Una query semplice può essere:

SELECT ClienteID, RagioneSociale, Città FROM Clienti WHERE Città="Roma" ORDER BY RagioneSociale;

Capire SELECT, FROM, WHERE e ORDER BY è già sufficiente per interpretare gran parte delle query di selezione comuni.

Query con alias

Gli alias rendono il codice più compatto:

SELECT C.RagioneSociale, O.DataOrdine FROM Clienti AS C INNER JOIN Ordini AS O ON C.ClienteID=O.ClienteID;

Usa alias brevi ma comprensibili. In query grandi riducono la ripetizione e rendono più leggibili i riferimenti qualificati.

Problema: la query restituisce troppi record

Controlla i join e i criteri. Se hai due tabelle senza collegamento, il prodotto cartesiano può creare migliaia di righe. Mostra temporaneamente le chiavi primarie per capire quali record vengono combinati.

Non attivare subito DISTINCT. Prima determina se le righe sono realmente duplicate o corrispondono a record diversi del lato molti.

Problema: la query non restituisce record

Rimuovi temporaneamente i criteri uno alla volta. Controlla tipi di dati, date e valori Null. Se usi INNER JOIN, verifica che esista una corrispondenza tra le tabelle. Prova un LEFT JOIN per capire quali record restano senza corrispondenza.

Nei criteri testuali controlla spazi e grafia. Nei dati importati possono esserci caratteri non visibili che rendono i confronti inattesi.

Problema: richiesta di parametro inattesa

Access mostra una finestra parametro anche quando un nome di campo è scritto male. Se una query chiede un valore che non avevi previsto, controlla i nomi dei campi, delle maschere e dei controlli. Un riferimento non riconosciuto viene spesso interpretato come parametro.

Controlla anche campi rinominati e query dipendenti. Il Database Documenter e la ricerca degli oggetti possono aiutare nei database complessi.

Problema: query non aggiornabile

Le query con GROUP BY, crosstab, DISTINCT, union e alcune combinazioni di join non sono aggiornabili. Non è necessariamente un errore. Se l’obiettivo è analisi o reporting, una query di sola lettura è perfettamente valida.

Se invece devi modificare dati, semplifica l’origine record o usa una maschera legata alla tabella principale con controlli separati per valori calcolati.

Query di comando: attenzione

Le query di aggiornamento, eliminazione, accodamento e creazione tabella modificano dati o struttura. Fai un backup e verifica prima i record con una query di selezione. In ambienti multiutente, coordina le operazioni che modificano grandi quantità di record.

Non usare una query di eliminazione per ‘pulire’ risultati duplicati finché non hai verificato le chiavi. Potresti cancellare record validi.

Microsoft 365 e Access 2024

Creazione guidata, Struttura query, Visualizzazione SQL e query di selezione sono disponibili nelle versioni desktop correnti, inclusi Access per Microsoft 365 e Access 2024. L’interfaccia può ricevere piccole modifiche, ma i concetti SQL restano gli stessi.

Access è un’applicazione desktop Windows. Non esiste una versione desktop nativa completa per macOS. Le query Access usano il dialetto SQL del motore Access, che presenta differenze rispetto a SQL Server, MySQL o PostgreSQL.

Access Runtime

Runtime può eseguire query già incluse in un’applicazione, ma non è pensato come ambiente completo per progettare e amministrare query. Sviluppa e testa con Access completo, poi distribuisci un’interfaccia controllata agli utenti Runtime.

Evita di richiedere agli utenti finali di aprire il Navigation Pane e modificare direttamente le query: una buona applicazione fornisce pulsanti, maschere e report che eseguono le operazioni necessarie.

32 bit e 64 bit

Le query SQL e i criteri non cambiano tra Access 32 e 64 bit. La differenza riguarda soprattutto driver, componenti esterni e VBA con API. Se le query usano tabelle ODBC, assicurati che il driver sia compatibile con la bitness di Access.

Testa comunque le applicazioni dopo una migrazione di Office perché riferimenti VBA o provider esterni possono influire sull’esecuzione, anche se la sintassi della query resta uguale.

Best practice per nominare le query

Usa nomi descrittivi e coerenti, per esempio qryClientiRoma, qryOrdiniAperti, qryVenditeMensili. Evita nomi generici come Query1. Se il progetto è grande, documenta scopo, origine e dipendenze delle query più importanti.

Non inserire necessariamente il tipo di query nel nome, ma una convenzione può aiutare: qrySel, qryUpd, qryApp o prefissi simili. L’importante è che il team la applichi in modo uniforme.

Best practice sulle prestazioni

Seleziona solo i campi necessari, filtra presto, indicizza campi usati frequentemente nei join e nei criteri, evita conversioni sui campi indicizzati e controlla le funzioni che impediscono l’uso degli indici. Con tabelle collegate a SQL Server, valuta pass-through query o query che permettano al server di eseguire il lavoro.

Misura le prestazioni con dati realistici. Una query veloce su cento record può diventare lenta su centinaia di migliaia.

Checklist prima di salvare

Controlla: origini corrette, join completi, campi necessari, criteri coerenti con i tipi, ordinamento, eventuali parametri dichiarati, risultati verificati, nomi chiari, assenza di campi sensibili non necessari e aggiornabilità se la query deve essere usata per modificare dati.

Esegui alcuni test con record limite: campi Null, date ai confini dell’intervallo, clienti senza ordini, ordini con importo zero e dati duplicati. Una query robusta deve comportarsi in modo prevedibile anche fuori dal caso medio.

FAQ

Una query copia i dati?

Una normale query di selezione no: salva la definizione e legge i dati correnti quando viene eseguita.

È meglio Wizard o Struttura?

Il Wizard è rapido; Struttura offre più controllo. Entrambi possono creare query valide.

Serve conoscere SQL?

Non è indispensabile per iniziare, ma imparare SQL rende molto più facile diagnosticare query complesse.

Posso usare più tabelle?

Sì. Definisci relazioni e join corretti per evitare combinazioni indesiderate.

Come filtro i record?

Inserisci espressioni nella riga Criteri oppure usa WHERE in SQL.

Come faccio un calcolo?

Aggiungi un campo calcolato con un alias seguito da due punti, per esempio TotaleRiga: [Quantita]*[Prezzo].

La query può alimentare report e maschere?

Sì. È uno degli usi principali delle query salvate.

Conclusione

Creare una query in Microsoft Access diventa semplice quando parti da una domanda precisa e costruisci il risultato per passi: scegli le origini, definisci i join, aggiungi i campi, applica criteri e ordinamento e infine verifica l’SQL generato. Inizia con query di selezione, poi passa gradualmente a parametri, aggregazioni e query di comando.

Per approfondire consulta Microsoft Support su creazione di query di selezione, query basate su più tabelle ed esempi di criteri.

Lascia un commento