Come usare i criteri nelle query Access: tutorial pratico

Per usare criteri access in modo corretto devi inserire espressioni coerenti con il tipo di campo e con la logica che vuoi applicare. I criteri decidono quali record vengono inclusi nella query. In Visualizzazione Struttura si scrivono nella riga Criteri e nelle righe Or; in SQL corrispondono soprattutto alla clausola WHERE e, nelle query aggregate, a HAVING.

Microsoft Support definisce un criterio come un’espressione che Access confronta con i valori del campo per stabilire se includere il record. In questa guida vediamo criteri per testo, numeri, date, Sì/No, Null, intervalli, caratteri jolly, parametri e più condizioni, con esempi validi per Access per Microsoft 365 e Access 2024.

Indice

  1. Che cosa sono i criteri
  2. Dove inserirli
  3. Testo
  4. Numeri
  5. Date
  6. Sì/No
  7. Null
  8. Like
  9. AND e OR
  10. Parametri
  11. HAVING
  12. Errori comuni
  13. FAQ

Che cosa sono i criteri in una query Access

I criteri sono condizioni. Una query senza criteri tende a restituire tutti i record compatibili con le origini e i join. Aggiungendo un criterio limiti il risultato. Per esempio Città = Roma restituisce solo clienti di Roma; Totale > 1000 restituisce ordini sopra una soglia.

È utile scrivere prima la regola in linguaggio naturale. Se la frase è ‘clienti attivi di Roma’, hai due condizioni: Città uguale a Roma e Attivo uguale a vero. Questa traduzione riduce gli errori quando la query diventa più complessa.

Dove si inseriscono i criteri

Apri la query in Visualizzazione Struttura. La griglia inferiore contiene la riga Criteri per ogni campo. Inserisci la condizione sotto il campo pertinente. Le righe Or consentono alternative logiche.

In Visualizzazione SQL vedrai la clausola WHERE. Passare tra le due viste è un ottimo modo per imparare la relazione tra griglia e sintassi SQL.

Criterio testuale esatto

Per Città = Roma, inserisci Roma. Access gestisce i delimitatori testuali nella griglia. In SQL:

WHERE Città="Roma"

Se i dati provengono da fonti esterne, controlla spazi e caratteri invisibili. Due stringhe che sembrano uguali possono differire se una contiene spazi finali.

Criterio diverso da un testo

Per escludere Roma puoi usare un operatore di disuguaglianza. In SQL:

WHERE Città<>"Roma"

Ricorda che Null non viene trattato come un normale valore. Se vuoi includere anche i record senza città, devi considerare esplicitamente Is Null.

Più valori testuali

Per Roma o Milano puoi usare OR o IN. Esempio:

WHERE Città IN ("Roma","Milano")

IN è spesso più leggibile quando le alternative sono molte. Mantieni però gli elenchi gestibili: se derivano da dati aziendali, potrebbe essere meglio creare una tabella correlata.

Criteri numerici

Su campi Numero o Valuta puoi usare >, <, >=, <= e =. Per importi maggiori di 500:

WHERE Totale>500

Se il campo è Testo breve, correggi il tipo invece di usare confronti numerici su stringhe.

Intervalli numerici

Between 100 And 500 include normalmente i limiti. Se vuoi escluderli usa >100 And <500. La scelta dipende dalla regola. In una tariffa o fascia di prezzo, definisci chiaramente cosa succede ai confini.

Testa sempre valori esattamente uguali ai limiti: sono casi in cui gli errori emergono facilmente.

Criteri sulle date

Le date possono essere filtrate con valori fissi, funzioni o parametri. Per selezionare dall’inizio dell’anno:

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

Questa espressione si aggiorna automaticamente ogni anno. Per il giorno corrente puoi usare Date().

Intervalli con data e ora

Se il campo contiene anche l’ora, usare una data finale può escludere i record successivi alla mezzanotte. Una strategia robusta è usare una condizione maggiore o uguale alla data iniziale e minore del giorno successivo alla data finale.

Questo dettaglio è importante per log, ordini e appuntamenti memorizzati con timestamp.

Sì/No

Per un campo Attivo usa True o False. Un criterio True mostra i record attivi. Puoi usare la colonna solo per filtrare e nasconderla dall’output.

Evita di memorizzare Sì e No come testi se il concetto è booleano. Il tipo Sì/No rende più semplici query e controlli.

Null

Per cercare valori mancanti usa Is Null:

WHERE Email Is Null

Per valori presenti usa Is Not Null. Non confrontare un campo con = Null perché Null segue una logica a tre valori e non funziona come una costante normale.

Null e stringa vuota

Nei campi Testo breve una stringa vuota può essere diversa da Null. Se il database consente entrambe, un criterio per dati mancanti potrebbe dover gestire Is Null Or = "". È meglio però decidere una convenzione e applicarla nelle maschere e nelle importazioni.

Due rappresentazioni dello stesso stato rendono query e controlli più complessi.

Like e caratteri jolly

Like serve per pattern testuali. Nella modalità Access tradizionale, un esempio per valori che iniziano con Mar è:

Like "Mar*"

I caratteri jolly possono differire in modalità ANSI-92. Controlla le impostazioni del database se il pattern non funziona come previsto.

Ricerca contiene

Un pattern con jolly all’inizio e alla fine cerca la stringa in qualsiasi posizione. È comodo per un campo di ricerca, ma su tabelle grandi può ridurre l’efficacia degli indici.

Per grandi cataloghi valuta filtri più selettivi o un database server con funzioni di ricerca appropriate.

AND nella griglia

Criteri sulla stessa riga vengono normalmente combinati con AND. Se sotto Città metti Roma e sotto Attivo metti True sulla stessa riga, entrambi devono essere veri.

WHERE Città="Roma" AND Attivo=True

Questo è il caso più semplice di condizioni multiple.

OR nella griglia

Le righe Or rappresentano alternative. Per Città Roma o Milano puoi mettere i due valori su righe differenti oppure usare OR esplicitamente. Quando ci sono più campi, fai attenzione: spostare un criterio su una riga Or può cambiare radicalmente la logica.

Passa a SQL per controllare le parentesi quando il risultato sembra troppo ampio.

Combinare AND e OR

Per clienti attivi di Roma o Milano vuoi:

WHERE Attivo=True AND (Città="Roma" OR Città="Milano")

Le parentesi sono importanti. Senza raggruppamento logico potresti includere record non attivi di Milano.

Criteri su campi non visualizzati

Puoi aggiungere un campo, impostare il criterio e togliere la spunta Mostra. È utile per StatoOrdine, Attivo o altri campi tecnici che non devono apparire nel risultato.

Il campo resta parte della query e della WHERE.

Criteri su più tabelle

Una query Clienti–Ordini può filtrare Città dalla tabella Clienti e DataOrdine da Ordini. Prima verifica il join ClienteID. Un join mancante può moltiplicare i record e rendere il filtro difficile da interpretare.

Approfondisci con come filtrare dati con una query, query di selezione e la categoria Guide Access.

Criteri e LEFT JOIN

Un criterio nella WHERE sul lato destro di un LEFT JOIN può escludere i record Null e trasformare di fatto il risultato. Se vuoi conservare le righe senza corrispondenza, analizza attentamente dove applicare la condizione.

Per trovare record non corrispondenti usa tipicamente Is Null sulla chiave del lato destro.

Parametri

Un criterio tra parentesi quadre, per esempio [Inserisci città:], crea una richiesta all’esecuzione. È semplice ma poco controllato. Per una soluzione professionale usa una maschera con combo box e riferisci la query al controllo.

In questo modo l’utente sceglie da valori validi e riduci errori di digitazione.

Dichiarare i parametri

Apri Parametri nella scheda Struttura e dichiara il tipo. Per [Data inizio] scegli Data/Ora. Per [ClienteID] scegli un tipo numerico coerente. Questo evita che Access interpreti un input come testo.

La dichiarazione è particolarmente importante quando il parametro compare in espressioni.

Criteri con funzioni

Puoi usare funzioni come Date(), Year(), Month(), Left() o Nz(), ma valuta le prestazioni. Applicare una funzione al campo per ogni record può impedire l’uso diretto dell’indice.

Se puoi esprimere lo stesso filtro come intervallo sul campo originale, spesso è preferibile.

Criteri aggregati e HAVING

Dopo GROUP BY, per filtrare sulla somma usa HAVING:

SELECT ClienteID, Sum(Totale) AS Spesa FROM Ordini GROUP BY ClienteID HAVING Sum(Totale)>5000;

WHERE filtra le righe prima dell’aggregazione; HAVING filtra i gruppi dopo. Questa distinzione è essenziale nelle query totali.

Criteri e DISTINCT

DISTINCT elimina righe duplicate nell’output dopo l’applicazione delle condizioni. Usalo quando vuoi un elenco di valori univoci, non per correggere una query con join errati.

Mostra le chiavi durante il debug e capisci perché le righe si ripetono.

Criteri e query di comando

Nelle query di aggiornamento o eliminazione, i criteri determinano quali record verranno modificati o cancellati. Un errore può avere conseguenze importanti. Prima crea una query di selezione con gli stessi criteri e controlla il risultato.

Fai un backup e valuta l’impatto in un ambiente multiutente.

Errore: criterio numerico non funziona

Controlla il tipo del campo. Se è Testo breve, >100 non è un confronto numerico affidabile. Correggi i dati alla fonte o usa una tabella di staging per l’importazione.

Evita conversioni permanenti nella query operativa se puoi sistemare la struttura.

Errore: data interpretata male

Dichiara parametri data e usa funzioni DateSerial quando appropriato. Le impostazioni locali possono influenzare l’interpretazione di date scritte manualmente. Testa con date ambigue come 03/04.

Per applicazioni distribuite, usa controlli data e valori Date/Time reali.

Errore: richiesta parametro inattesa

Un nome campo errato viene spesso interpretato come parametro. Controlla ortografia e riferimenti a maschere. Se un controllo è stato rinominato, aggiorna la query.

Non inserire un valore casuale: individua l’identificatore sconosciuto.

Errore: troppi record

Controlla OR e parentesi. Se la query usa più tabelle, verifica i join. Mostra i campi dei criteri e le chiavi primarie per capire perché un record è incluso.

Aggiungi le condizioni gradualmente e conta le righe dopo ogni passaggio.

Errore: nessun record

Rimuovi i criteri uno alla volta. Verifica Null, spazi, tipi e corrispondenze nei join. Un criterio troppo restrittivo o un INNER JOIN senza corrispondenza può azzerare il risultato.

Costruire la query per fasi è il metodo di diagnosi più affidabile.

Prestazioni

Indicizza i campi usati frequentemente nei criteri quando ha senso, soprattutto chiavi e colonne selettive. Non indicizzare ogni campo indiscriminatamente: gli indici hanno un costo sugli aggiornamenti.

Con tabelle collegate, formula criteri che possano essere eseguiti efficientemente dalla sorgente.

Microsoft 365 e Access 2024

Gli esempi di criteri sono applicabili alle versioni desktop correnti e Microsoft Support li documenta per Microsoft 365 e Access 2024. Le piccole variazioni dell’interfaccia non cambiano la logica.

Access desktop è disponibile su Windows e non ha una versione nativa completa per macOS.

Runtime, 32 e 64 bit

Runtime può eseguire query con criteri già progettate. La sintassi non cambia tra 32 e 64 bit. Se la query accede a origini ODBC, controlla invece la bitness dei driver.

Per utenti Runtime preferisci maschere con filtri guidati anziché accesso diretto alla struttura delle query.

Best practice

Usa tipi corretti, definisci la regola in linguaggio naturale, aggiungi un criterio alla volta, dichiara parametri, verifica AND/OR, gestisci Null consapevolmente, evita funzioni inutili sui campi indicizzati e testa casi limite.

Per criteri critici usati in processi aziendali, documenta lo scopo e conserva query di test.

FAQ

Dove scrivo un criterio?

Nella riga Criteri della griglia o nella clausola WHERE.

Come cerco due città?

Usa OR o IN.

Come filtro valori Null?

Usa Is Null o Is Not Null.

Come filtro un intervallo?

Usa Between … And … oppure operatori di confronto.

Come combino condizioni?

AND richiede entrambe vere; OR almeno una. Usa parentesi quando le combini.

Posso chiedere il valore all’utente?

Sì, con una query parametro o controlli di maschera.

Conclusione

Usare i criteri nelle query Access significa tradurre regole aziendali in espressioni precise. Parti dal tipo del campo, usa operatori appropriati, gestisci correttamente Null, combina AND e OR con parentesi e dichiara i parametri. Una query con criteri chiari è più semplice da verificare, più sicura da riutilizzare e più facile da trasformare in report o procedure automatiche.

Consulta Microsoft Support su esempi di criteri, query di selezione e filtrare i dati in una query.

Lascia un commento