Questo articolo fornisce molti esempi di espressioni in Access. Le espressioni sono una combinazione di operatori logici e matematici, costanti, funzioni, campi di tabelle, controlli e proprietà che restituiscono un singolo valore. È possibile usare espressioni in Access per calcolare valori, convalidare i dati e impostare un valore predefinito.
Contenuto dell'articolo
Maschere e report
Le tabelle in questa sezione forniscono esempi di espressioni che calcolano un valore in un controllo che si trova in una maschera o in un report. Per creare un controllo calcolato, immettere un'espressione nella proprietà OrigineControllo del controllo e non in un campo di tabella o in una query.
Nota È possibile usare le espressioni in una maschera o un report anche quando si evidenziano i dati con la formattazione condizionale.
Operazioni di testo
Le espressioni nella tabella seguente usano gli operatori & (e commerciale) e + (più) per combinare stringhe di testo e funzioni predefinite per modificare una stringa di testo o per modificare in altro modo un testo per creare un controllo calcolato.
Espressione |
Risultato |
---|---|
="N/A" |
Visualizza N/A. |
=[FirstName] & " " & [LastName] |
Visualizza i valori contenuti nei campi di tabella denominati Nome e Cognome. In questo esempio l'operatore & viene usato per combinare il campo Nome, uno spazio racchiuso tra virgolette e il campo Cognome. |
=Left([ProductName], 1) |
Usa la funzione Left per visualizzare il primo carattere del valore di un campo o controllo denominato NomeProdotto. |
=Right([AssetCode], 2) |
Usa la funzione Right per visualizzare gli ultimi 2 caratteri del valore di un campo o controllo denominato CodiceBene. |
=Trim([Address]) |
Usa la funzione Trim per visualizzare il valore del controllo Indirizzo, rimuovendo gli eventuali spazi iniziali o finali. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Usa la funzione IIf per visualizzare i valori dei controlli Città e CAP se il valore del controllo Areageografica è Null. In caso contrario, visualizza i valori dei controlli Città, Areageografica e CAP separati da spazi. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
Usa l'operatore + e la propagazione del valore Null per visualizzare i valori dei controlli Città e CAP se il valore del campo o del controllo Areageografica è Null. In caso contrario, visualizza i valori dei campi o dei controlli Città, Areageografica e CAP separati da spazi. La propagazione del valore Null prevede che se un componente di un'espressione ha valore Null, il risultato dell'intera espressione sarà Null. L'operatore + supporta la propagazione del valore Null, mentre l'operatore & non la supporta. |
Intestazioni e piè di pagina
Usare le proprietà Page e Pages per visualizzare o stampare i numeri di pagina in maschere o report. Le proprietà Page e Pages sono disponibili solo durante la stampa o l'anteprima di stampa, quindi non vengono visualizzate nella finestra delle proprietà della maschera o del report. In genere queste proprietà vengono usate posizionando una casella di testo nella sezione dell'intestazione o del piè di pagina della maschera o del report, quindi usando un'espressione, ad esempio una di quelle mostrate nella tabella seguente.
Per altre informazioni sull'uso di intestazioni e piè di pagina in maschere e report, vedere l'articolo Inserire i numeri di pagina in una maschera o un report.
Espressione |
Risultato |
---|---|
=[Page] |
1 |
="Page " & [Page] |
Pagina 1 |
="Page " & [Page] & " of " & [Pages] |
Pagina 1 di 3 |
=[Page] & " of " & [Pages] & " Pages" |
1 di 3 Pagine |
=[Page] & "/" & [Pages] & " Pages" |
1/3 Pagine |
=[Country/region] & " - " & [Page] |
IT - 1 |
=Format([Page], "000") |
001 |
="Printed on: " & Date() |
Stampa del: 31/12/17 |
Operazioni aritmetiche
È possibile usare le espressioni per aggiungere, sottrarre, moltiplicare e dividere i valori in due o più campi o controlli. È anche possibile usare le espressioni per eseguire operazioni aritmetiche sulle date. Si supponga, ad esempio, di avere un campo di tabella di tipo Data/ora denominato DataRichiesta. L'espressione =[RequiredDate] - 2 immessa nel campo o in un controllo associato al campo restituirà un valore di data/ora antecedente di due giorni ai valori correnti presenti nel campo DataRichiesta.
Espressione |
Risultato |
---|---|
=[Subtotal]+[Freight] |
Somma dei valori dei campi o dei controlli Subtotale e SpeseTrasporto. |
=[RequiredDate]-[ShippedDate] |
Intervallo compreso tra i valori dei campi o dei controlli DataRichiesta e DataSpedizione. |
=[Price]*1.06 |
Prodotto del valore del campo o del controllo Prezzo moltiplicato per 1,06, che aggiunge il 6% al valore Prezzo. |
=[Quantity]*[Price] |
Il prodotto dei valori dei campi Quantità e Prezzo. |
=[EmployeeTotal]/[CountryRegionTotal] |
Quoziente dei valori dei campi o dei controlli TotaleDipendenti e TotalePaeseAreageografica. |
Nota Quando si usa un operatore aritmetico (+, -, * e /) in un'espressione e il valore di uno dei controlli nell'espressione è Null, il risultato dell'intera espressione sarà Null. Tale situazione è nota come propagazione del valore Null. Se uno o più record in uno dei controlli usati nell'espressione possono includere un valore Null, è possibile evitare la propagazione convertendo il valore Null in zero con la funzione Nz, ad esempio, =Nz([Subtotal])+Nz([Freight]).
Valori in altri controlli
A volte è necessario un valore che si trova in un'altra posizione, ad esempio in un campo o in un controllo in un'altra maschera o report. È possibile usare un'espressione per restituire il valore da un altro campo o controllo.
La tabella seguente mostra esempi di espressioni che possono essere usati nei controlli calcolati delle maschere.
Espressione |
Risultato |
---|---|
=Forms![Orders]![OrderID] |
Valore del controllo IDOrdine della maschera Ordini. |
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] |
Valore del controllo SubtotaleOrdini della sottomaschera denominata Sottomaschera ordini nella maschera Ordini. |
=Forms![Orders]![Orders Subform]![ProductID].Column(2) |
Valore della terza colonna in IDProdotto, una casella di riepilogo a più colonne della sottomaschera denominata Sottomaschera ordini nella maschera Ordini. 0 fa riferimento alla prima colonna, 1 fa riferimento alla seconda colonna e così via. |
=Forms![Orders]![Orders Subform]![Price] * 1.06 |
Prodotto del valore del controllo Prezzo della sottomaschera denominata Sottomaschera ordini nella maschera Ordini moltiplicato per 1,06, che aggiunge il 6% al valore del controllo Prezzo. |
=Parent![OrderID] |
Valore del controllo IDOrdine nella maschera principale o padre della sottomaschera corrente. |
Le espressioni nella tabella seguente mostrano alcuni modi per usare i controlli calcolati nei report. Le espressioni fanno riferimento alla proprietà Report.
Espressione |
Risultato |
---|---|
=Report![Invoice]![OrderID] |
Valore di un controllo denominato IDOrdine incluso in un report denominato Fattura. |
=Report![Summary]![Summary Subreport]![SalesTotal] |
Valore del controllo TotaleVendite del sottoreport denominato Sottoreport riepilogo nel report Riepilogo. |
=Parent![OrderID] |
Valore del controllo OrderID del report principale o padre del sottoreport corrente. |
Conteggio, somma e media di valori
È possibile usare un tipo di funzione denominata funzione di aggregazione per calcolare i valori per uno o più campi o controlli. Ad esempio, è possibile calcolare il totale del gruppo per il piè di pagina gruppo in un report oppure il subtotale di un ordine per le voci in una maschera. È anche possibile contare il numero di elementi in uno o più campi o calcolare un valore medio.
Le espressioni nella tabella seguente mostrano alcune modalità d'uso di funzioni quali Avg, Count e Sum.
Espressione |
Descrizione |
---|---|
=Avg([Freight]) |
Usa la funzione Avg per visualizzare la media dei valori di un campo di tabella o di un controllo denominato "SpeseTrasporto". |
=Count([OrderID]) |
Usa la funzione Count per visualizzare il numero di record inclusi nel controllo IDOrdine. |
=Sum([Sales]) |
Usa la funzione Sum per visualizzare la somma dei valori del controllo Vendite. |
=Sum([Quantity]*[Price]) |
Usa la funzione Sum per visualizzare la somma del prodotto dei valori nei controlli Quantità e Prezzo. |
=[Sales]/Sum([Sales])*100 |
Visualizza la percentuale di vendite, che viene determinata dividendo il valore del controllo Vendite per la somma di tutti i valori del controllo Vendite. Se si imposta la proprietà Format del controllo su Percento, non includere *100 nell'espressione. |
Per altre informazioni sull'utilizzo delle funzioni di aggregazione e il calcolo della somma dei valori in campi e colonne, vedere gli articoli Sommare i dati tramite una query, Conteggiare dati tramite una query, Visualizzare totali di colonna in un foglio dati con la riga Totali e Visualizzare totali di colonna in un foglio dati.
Funzioni di aggregazione SQL
Usare un tipo di funzione denominata SQL o funzione di aggregazione sui domini per sommare o contare i valori in modo selettivo. Un "dominio" è costituito da uno o più campi in una o più tabelle oppure da uno o più controlli di una o più maschere o report. Ad esempio, è possibile associare i valori in un campo di tabella con i valori in un controllo in una maschera.
Espressione |
Descrizione |
---|---|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) |
Usa la funzione DLookup per restituire il valore del campo NomeContatto incluso nella tabella Fornitori quando il valore del campo IDFornitore incluso nella tabella corrisponde al valore del controllo IDFornitore nella maschera Fornitori. |
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) |
Usa la funzione DLookup per restituire il valore del campo NomeContatto incluso nella tabella Fornitori quando il valore del campo IDFornitore incluso nella tabella corrisponde al valore del controllo IDFornitore nella maschera Nuovi fornitori. |
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") |
Usa la funzione DSum per restituire la somma totale dei valori inclusi nel campo OrderAmount della tabella Orders quando CustomerID corrisponde a RATTC. |
=DCount("[Retired]","[Assets]","[Retired]=Yes") |
Usa la funzione DCount per restituire il numero di valori Sì inclusi nel campo Ritirati (un campo Sì/No) della tabella Beni. |
Operazioni di data
La registrazione di date e ore è un'azione di database fondamentale. Ad esempio, è possibile calcolare il numero di giorni trascorsi a partire dalla data di fatturazione per determinare i tempi della contabilità clienti. È possibile formattare le date e le ore in vari modi, come mostrato nella tabella seguente.
Espressione |
Descrizione |
---|---|
=Date() |
Usa la funzione Date per visualizzare la data corrente nel formato mm-dd-yy, dove mm rappresenta il mese (da 1 a 12), dd rappresenta il giorno (da 1 a 31) e yy rappresenta le ultime due cifre dell'anno, compreso tra il 1980 e il 2099. |
=Format(Now(), "ww") |
Usa la funzione Format per visualizzare il numero della settimana dell'anno per la data corrente, dove ww rappresenta le settimane comprese tra 1 e 53. |
=DatePart("yyyy", [OrderDate]) |
Usa la funzione DatePart per visualizzare il valore del controllo DataOrdine con il formato dell'anno esteso. |
=DateAdd("y", -10, [PromisedDate]) |
Usa la funzione DateAdd per visualizzare una data antecedente di 10 giorni al valore del controllo DataImpegno. |
=DateDiff("d", [OrderDate], [ShippedDate]) |
Usa la funzione DateDiff per visualizzare il numero di giorni di differenza tra i valori dei controlli DataOrdine e DataSpedizione. |
=[InvoiceDate] + 30 |
Usa operazioni aritmetiche sulle date per calcolare la data posteriore di 30 giorni alla data contenuta nel campo o nel controllo DataFattura. |
Condizioni di due soli valori
Le espressioni di esempio nella tabella seguente usano la funzione IIf per restituire uno o due valori possibili. Alla funzione IIf vengono passati tre argomenti: Il primo argomento è un'espressione che deve restituire un valore True o False. Il secondo argomento è il valore da restituire se l'espressione è vera, mentre il terzo argomento è il valore da restituire se l'espressione è falsa.
Espressione |
Descrizione |
---|---|
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
Usa la funzione IIf (Immediate If) per visualizzare il messaggio "Order Confirmed" se il valore del controllo Confirmed è Yes. In caso contrario, visualizza il messaggio "Order Not Confirmed.". |
=IIf(IsNull([Country/region]), " ", [Country]) |
Usa le funzioni IIf e IsNull per visualizzare una stringa vuota se il valore del controllo Paese/area geografica/region è Null. In caso contrario, visualizza il valore del controllo Paese/area geografica. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Usa le funzioni IIf e IsNull per visualizzare i valori dei controlli Città e CAP se il valore contenuto nel controllo Region è Null. In caso contrario, visualizza i valori dei campi o dei controlli Città, Areageografica e CAP. |
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Usa le funzioni IIf e IsNull per visualizzare il messaggio "Controllare data mancante" se il risultato della sottrazione di DataSpedizione da DataRichiesta è Null. In caso contrario, visualizza l'intervallo compreso tra i valori di data dei controlli DataRichiesta e DataSpedizione. |
Query e filtri
Questa sezione contiene esempi di espressioni che è possibile usare per creare un campo calcolato in una query o per specificare i criteri per una query. Un campo calcolato è una colonna in una query che risulta da un'espressione. Ad esempio, è possibile calcolare un valore, combinare valori di testo come nomi e cognomi oppure formattare una parte di una data.
Usare i criteri in una query per limitare i record su cui si lavora. È ad esempio possibile usare l'operatore Between per specificare le date di inizio e fine e limitare i risultati della query agli ordini spediti tra tali date.
Di seguito sono disponibili esempi di espressioni da usare nelle query.
Operazioni di testo
Le espressioni nella tabella seguente usano gli operatori & e + per combinare stringhe di testo e funzioni predefinite per modificare una stringa di testo o per modificare in altro modo un testo per creare un campo calcolato.
Espressione |
Descrizione |
---|---|
FullName: [FirstName] & " " & [LastName] |
Crea un campo denominato NomeCompleto che visualizza i valori inclusi nei campi Nome e Cognome separati da uno spazio. |
Address2: [City] & " " & [Region] & " " & [PostalCode] |
Crea un campo denominato Address2 che visualizza i valori inclusi nei campi Città, Areageografica e CAP separati da spazi. |
ProductInitial: Left([ProductName], 1) |
Crea un campo denominato ProdottoIniziale, quindi usa la funzione Left per visualizzare in questo campo il primo carattere del valore incluso nel campo NomeProdotto. |
TypeCode: Right([AssetCode], 2) |
Crea un campo denominato TypeCode, quindi usa la funzione Right per visualizzare gli ultimi due caratteri dei valori inclusi nel campo CodiceBene. |
AreaCode: Mid([Phone],2,3) |
Crea un campo denominato Prefisso, quindi usa la funzione Mid per visualizzare tre caratteri a partire dal secondo carattere del valore incluso nel campo Telefono. |
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 |
Assegna al campo calcolato il nome PrezzoComplessivo e usa la funzione CCur per calcolare il totale delle voci con uno sconto applicato. |
Operazioni aritmetiche
È possibile usare le espressioni per aggiungere, sottrarre, moltiplicare e dividere i valori in due o più campi o controlli. È anche possibile eseguire operazioni aritmetiche sulle date. Si supponga, ad esempio, di avere un campo Data/ora denominato DataRichiesta. L'espressione =[RequiredDate] - 2 restituisce un valore Data/ora antecedente di due giorni al valore del campo DataRichiesta.
Espressione |
Descrizione |
---|---|
PrimeFreight: [Freight] * 1.1 |
Crea un campo denominato SpeseTrasportoPrincipali, quindi visualizza nel campo le spese di trasporto aumentate del 10%. |
OrderAmount: [Quantity] * [UnitPrice] |
Crea un campo denominato ImportoOrdine, quindi visualizza il prodotto dei valori inclusi nei campi Quantità e PrezzoUnitario. |
LeadTime: [RequiredDate] - [ShippedDate] |
Crea un campo denominato TempoDiRisposta, quindi visualizza la differenza tra i valori inclusi nei campi DataRichiesta e DataSpedizione. |
TotalStock: [UnitsInStock]+[UnitsOnOrder] |
Crea un campo denominato TotaleMagazzino, quindi visualizza la somma dei valori inclusi nei campi ScorteInMagazzino e QuantitàOrdinata. |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Crea un campo denominato PercentualeSpeseTrasporto, quindi visualizza la percentuale delle spese di trasporto in ogni subtotale. L'espressione usa la funzione Sum per sommare i valori nel campo SpeseTrasporto, quindi divide i totali per la somma dei valori nel campo Subtotale. Per usare questa espressione, è necessario convertire la query di selezione in una query di totalizzazione perché è necessario usare la riga Totale nella griglia di struttura e impostare la cella Totale per il campo su Espressione. Per altre informazioni sulla creazione di query di totalizzazione, vedere l'articolo Sommare i dati tramite una query. Se si imposta la proprietà Format del campo su Percent, non includere *100. |
Per altre informazioni sull'utilizzo delle funzioni di aggregazione e il calcolo della somma dei valori in campi e colonne, vedere gli articoli Sommare i dati tramite una query, Conteggiare dati tramite una query, Visualizzare totali di colonna in un foglio dati con la riga Totali e Visualizzare totali di colonna in un foglio dati.
Operazioni di data
Quasi tutti i database archiviano e tengono traccia di date e ore. Per usare date e ore in Access, impostare i relativi campi nelle tabelle sul tipo di dati Data/ora. Access può eseguire calcoli aritmetici sulle date, ad esempio, è possibile calcolare il numero di giorni trascorsi a partire dalla data di fatturazione per determinare i tempi della contabilità clienti.
Espressione |
Descrizione |
---|---|
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) |
Crea un campo denominato LagTime, quindi usa la funzione DateDiff per visualizzare il numero di giorni compresi tra la data dell'ordine e la data di spedizione. |
YearHired: DatePart("yyyy",[HireDate]) |
Crea un campo denominato YearHired, quindi usa la funzione DatePart per visualizzare l'anno di assunzione di ogni dipendente. |
MinusThirty: Date( )- 30 |
Crea un campo denominato MenoTrenta, quindi usa la funzione Date per visualizzare la data antecedente di 30 giorni alla data corrente. |
Funzioni di aggregazione SQL
Le espressioni nella tabella seguente usano funzioni SQL (Structured Query Language) che consentono di aggregare o di riepilogare i dati. Queste funzioni, ad esempio Sum, Count e Avg, vengono chiamate spesso funzioni di aggregazione.
Oltre alle funzioni di aggregazione, Access fornisce anche funzioni di aggregazione "sui domini" che consentono di sommare o contare i valori in modo selettivo. Ad esempio, è possibile contare solo i valori all'interno di un determinato intervallo o cercare un valore in un'altra tabella. Il set di funzioni di aggregazione sui domini include le funzioni DSum, DCount e DAvg.
Per calcolare i totali, spesso è necessario creare una query di totalizzazione. Ad esempio, per riepilogare per gruppo, è necessario usare una query di totalizzazione. Per abilitare una query di totalizzazione dalla griglia di struttura della query, fare clic su Totali nel menu Visualizza.
Espressione |
Descrizione |
---|---|
RowCount: Count(*) |
Crea un campo denominato ConteggioRighe, quindi usa la funzione Count per contare il numero di record nella query, inclusi i record con campi Null (vuoti). |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Crea un campo denominato PercentualeSpeseTrasporto, quindi calcola la percentuale delle spese di trasporto in ogni subtotale dividendo la somma dei valori inclusi nel campo SpeseTrasporto per la somma dei valori inclusi nel campo Subtotale. Questo esempio usa la funzione Sum. È necessario usare questa espressione con una query di totalizzazione. Se si imposta la proprietà Format del campo su Percent, non includere *100. Per altre informazioni sulla creazione di query di totalizzazione, vedere l'articolo Sommare i dati tramite una query. |
AverageFreight: DAvg("[Freight]", "[Orders]") |
Crea un campo denominato AverageFreight, quindi usa la funzione DAvg per calcolare la media delle spese di trasporto per tutti gli ordini riepilogati in una query di totalizzazione. |
Campi con dati mancanti
Le espressioni seguenti consentono di usare campi con informazioni potenzialmente mancanti, ad esempio quelli che contengono valori Null (sconosciuti o non definiti). I valori Null, ad esempio un prezzo sconosciuto per un nuovo prodotto o un valore che un collega ha dimenticato di aggiungere a un ordine, sono piuttosto frequenti. La capacità di trovare ed elaborare i valori Null può essere fattore fondamentale nelle operazioni di database e le espressioni nella tabella seguente mostrano alcuni modi comuni per gestire i valori Null.
Espressione |
Descrizione |
---|---|
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) |
Crea un campo denominato Paeseareageograficacorrente, quindi usa le funzioni IIf e IsNull per visualizzare una stringa vuota in tale campo quando il campo PaeseAreageografica contiene un valore Null. In caso contrario, visualizza il contenuto del campo PaeseAreageografica. |
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Crea un campo denominato LeadTime, quindi usa le funzioni IIf e IsNull per visualizzare il messaggio "Controllare data mancante" se il valore incluso nel campo DataRichiesta o DataSpedizione è Null. In caso contrario, visualizza la differenza di data. |
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) |
Crea un campo denominato SixMonthSales, quindi visualizza il totale dei valori inclusi nei campi VenditeTrim1 e VenditeTrim2 usando per prima la funzione Nz per convertire gli eventuali valori Null in zero. |
Campi calcolati con sottoquery
È possibile usare una query annidata, chiamata anche sottoquery, per creare un campo calcolato. L'espressione nella tabella seguente è un esempio di campo calcolato restituito da una sottoquery.
Espressione |
Descrizione |
---|---|
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) |
Crea un campo denominato Categoria, quindi visualizza NomeCategoria, se il valore IDCategoria della tabella Categorie è uguale al valore IDCategoria della tabella Prodotti. |
Confronto di valori di testo
Le espressioni di esempio nella tabella seguente mostrano i criteri che consentono di ottenere una corrispondenza di valori di testo interi o parziali.
Campo |
Espressione |
Descrizione |
---|---|---|
CittàSpedizione |
"London" |
Visualizza gli ordini spediti a Londra. |
CittàSpedizione |
"London" Or "Hedge End" |
Usa l'operatore Or per visualizzare gli ordini spediti a Londra o Hedge End. |
PaeseAreageograficaSpedizione |
In("Canada", "UK") |
Usa l'operatore In per visualizzare gli ordini spediti in Canada o Regno Unito. |
PaeseAreageograficaSpedizione |
Not "USA" |
Usa l'operatore Not per visualizzare gli ordini spediti in tutti i paesi/aree geografiche tranne gli Stati Uniti. |
NomeProdotto |
Not Like "C*" |
Usa l'operatore Not e il carattere jolly * per visualizzare i prodotti il cui nome non inizia con la lettera C. |
NomeSocietà |
>="N" |
Visualizza gli ordini spediti a società il cui nome inizia con una lettera compresa tra N e Z. |
CodiceProdotto |
Right([ProductCode], 2)="99" |
Usa la funzione Right per visualizzare gli ordini con valori CodiceProdotto che terminano con 99. |
NomeSpedizione |
Like "S*" |
Visualizza gli ordini spediti a clienti il cui nome inizia con la lettera S. |
Confronto di criteri di data
Le espressioni nella tabella seguente mostrano come usare le date e le funzioni correlate nelle espressioni criterio. Per altre informazioni sull'immissione e l'utilizzo dei valori di data, vedere l'articolo Formattare un campo di data e ora.
Campo |
Espressione |
Descrizione |
---|---|---|
DataSpedizione |
#2/2/2017# |
Visualizza gli ordini spediti il 2 febbraio 2017. |
DataSpedizione |
Date() |
Visualizza gli ordini spediti in data odierna. |
DataRichiesta |
Between Date( ) And DateAdd("m", 3, Date( )) |
Usa l'operatore Between...And e le funzioni DateAdd e Date per visualizzare gli ordini richiesti tra la data odierna e i tre mesi successivi alla data odierna. |
DataOrdine |
< Date( ) - 30 |
Usa la funzione Date per visualizzare gli ordini antecedenti a 30 giorni. |
DataOrdine |
Year([OrderDate])=2017 |
Usa la funzione Year per visualizzare gli ordini con date relative all'anno 2017. |
DataOrdine |
DatePart("q", [OrderDate])=4 |
Usa la funzione DatePart per visualizzare gli ordini relativi al quarto trimestre. |
DataOrdine |
DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 |
Usa le funzioni DateSerial, Year e Month per visualizzare gli ordini relativi all'ultimo giorno di ogni mese. |
DataOrdine |
Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) |
Usa le funzioni Year e Month con l'operatore And per visualizzare gli ordini relativi all'anno e al mese corrente. |
DataSpedizione |
Between #1/5/2017# And #1/10/2017# |
Usa l'operatore Between...And per visualizzare gli ordini spediti non prima del 5 gennaio 2017 e non dopo il 10 gennaio 2017. |
DataRichiesta |
Between Date( ) And DateAdd("M", 3, Date( )) |
Usa l'operatore Between...And per visualizzare gli ordini richiesti tra la data odierna e i tre mesi successivi alla data odierna. |
DataNascita |
Month([BirthDate])=Month(Date()) |
Usa le funzioni Month e Date per visualizzare i dipendenti che compiono gli anni nel mese specificato. |
Ricerca di dati mancanti
Le espressioni nella tabella seguente funzionano con campi che contengono informazioni potenzialmente mancanti, ovvero quelli che potrebbero contenere un valore Null o una stringa di lunghezza zero. Un valore Null rappresenta l'assenza di informazioni. Non rappresenta un valore pari a zero o di altro tipo. Access supporta il concetto di assenza di informazioni perché si tratta di un concetto fondamentale per l'integrità di un database. Nelle situazioni reali le informazioni sono spesso assenti, anche se solo temporaneamente, ad esempio il prezzo ancora non determinato di un nuovo prodotto. Di conseguenza, un database modellato in base a un'entità reale, ad esempio un'azienda, deve poter registrare informazioni come mancanti. È possibile usare la funzione IsNull per determinare se un campo o un controllo contiene un valore Null ed è possibile usare la funzione Nz per convertire un valore Null in zero.
Campo |
Espressione |
Descrizione |
---|---|---|
AreaSpedizione |
Is Null |
Visualizza gli ordini dei clienti il cui campo AreaSpedizione contiene un valore Null, ovvero il cui valore è mancante. |
AreaSpedizione |
Is Not Null |
Visualizza gli ordini dei clienti il cui campo AreaSpedizione contiene un valore. |
Fax |
"" |
Visualizza gli ordini dei clienti che non dispongono di un fax, indicazione fornita da un valore stringa di lunghezza zero incluso nel campo Fax invece che da un valore Null (mancante). |
Confronto di criteri di record con Like
L'operatore Like offre molta flessibilità quando si cerca di associare le righe che seguono i criteri, perché è possibile usare Like con caratteri jolly e definire i criteri in base a cui Access trova le corrispondenze. Ad esempio, il carattere jolly * (asterisco) corrisponde a una sequenza di caratteri di qualsiasi tipo e consente di trovare in modo semplice tutti i nomi che iniziano con una lettera. Ad esempio, utilizzare l'espressione Like "S*" per trovare tutti i nomi che iniziano con la lettera S. Per ulteriori informazioni, vedere l'articolo Operatore Like.
Campo |
Espressione |
Descrizione |
---|---|---|
NomeSpedizione |
Like "S*" |
Trova tutti i record nei quali il valore del campo NomeSpedizione inizia con la lettera S. |
NomeSpedizione |
Like "*Imports" |
Trova tutti i record nei quali il valore del campo NomeSpedizione termina con la parola "Importazioni". |
NomeSpedizione |
Like "[A-D]*" |
Trova tutti i record nei quali il valore del campo NomeSpedizione inizia con le lettere A, B, C o D. |
NomeSpedizione |
Like "*ar*" |
Trova tutti i record nei quali il valore del campo NomeSpedizione contiene la sequenza di lettere "ar". |
ShipName |
Like "Villa Dewe?" |
Trova tutti i record nei quali il valore del campo NomeSpedizione contiene "Villa" nella prima parte e una stringa di cinque lettere, in cui le prime quattro lettere sono "Dewe" e l'ultima lettera è sconosciuta. |
NomeSpedizione |
Not Like "A*" |
Trova tutti i record nei quali il valore del campo NomeSpedizione non inizia con la lettera A. |
Confronto di righe con aggregazioni SQL
Usare una funzione SQL o di aggregazione sui domini per sommare, contare o calcolare la media dei valori in modo selettivo. Questa funzione è utile, ad esempio, per contare solo i valori compresi in un determinato intervallo o che restituiscono il valore Sì. In altri casi, potrebbe essere necessario cercare un valore di un'altra tabella per visualizzarlo. Le espressioni di esempio nella tabella seguente usano le funzioni di aggregazione sui domini per eseguire un calcolo in un set di valori e usano il risultato come criterio di query.
Campo |
Espressione |
Descrizione |
---|---|---|
SpeseTrasporto |
> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) |
Usa le funzioni DStDev e DAvg per visualizzare tutti gli ordini per i quali le spese di trasporto hanno superato la media più la deviazione standard per le spese di trasporto. |
Quantità |
> DAvg("[Quantity]", "[Order Details]") |
Usa la funzione DAvg per visualizzare i prodotti ordinati in quantità superiori alla quantità media degli ordini. |
Confronto di campi con sottoquery
Usare una sottoquery, chiamata anche query annidata, per calcolare un valore da usare come criterio. Le espressioni di esempio nella tabella seguente associano le righe in base ai risultati restituiti da una sottoquery.
Campo |
Espressione |
Risultato visualizzato |
---|---|---|
PrezzoUnitario |
(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") |
Prodotti i cui prezzi sono uguali al prezzo del prodotto Anisetta. |
PrezzoUnitario |
>(SELECT AVG([UnitPrice]) FROM [Products]) |
Prodotti il cui prezzo unitario è superiore alla media. |
Stipendio |
> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) |
Stipendio di ogni venditore il cui stipendio è superiore rispetto a quello di tutti i dipendenti con titolo di "Direttore" o "Vicepresidente". |
TotaleOrdini: [PrezzoUnitario] * [Quantità] |
> (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) |
Ordini i cui totali sono superiori al valore medio degli ordini. |
Query di aggiornamento
Usare una query di aggiornamento per modificare i dati in uno o più campi esistenti di un database. Ad esempio, è possibile sostituire i valori o eliminarli completamente. Questa tabella mostra alcuni modi per usare le espressioni nelle query di aggiornamento. Usare queste espressioni nella riga Aggiorna a nella griglia di struttura della query per il campo da aggiornare.
Per altre informazioni sulla creazione di query di aggiornamento, vedere l'articolo Creare ed eseguire una query di aggiornamento.
Campo |
Espressione |
Risultato |
---|---|---|
Titolo |
"Salesperson" |
Modifica un valore di testo in Venditore. |
InizioProgetto |
#8/10/17# |
Modifica un valore di data in 10-ago-17. |
Ritirato |
Yes |
Modifica un valore No in Sì in un campo Sì/No. |
NumeroParte |
"PN" & [PartNumber] |
Aggiunge NP all'inizio di ogni numero parte specificato. |
TotaleVoce |
[UnitPrice] * [Quantity] |
Calcola il prodotto di PrezzoUnitario per Quantità. |
SpeseTrasporto |
[Freight] * 1.5 |
Aumenta le spese di trasporto del 50%. |
Vendite |
DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) |
Se i valori IDProdotto inclusi nella tabella corrente corrispondono ai valori IDProdotto inclusi nella tabella Dettagli ordini, i totali delle vendite vengono aggiornati in base al prodotto di Quantità per PrezzoUnitario. |
CAPSpedizione |
Right([ShipPostalCode], 5) |
Tronca i caratteri più a sinistra, mantenendo i cinque caratteri più a destra. |
PrezzoUnitario |
Nz([UnitPrice]) |
Modifica un valore Null (non definito o sconosciuto) in zero (0) nel campo PrezzoUnitario. |
Istruzioni SQL
Structured Query Language, o SQL, è il linguaggio di query usato da Access. Tutte le query create nella visualizzazione Struttura query possono essere espresse anche con SQL. Per visualizzare l'istruzione SQL per una query, fare clic su Visualizzazione SQL nel menu Visualizza. La tabella seguente mostra le istruzioni SQL di esempio che usano un'espressione.
Istruzione SQL che usa un'espressione |
Risultato |
---|---|
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; |
Visualizza i valori inclusi nei campi Nome e Cognome dei dipendenti il cui cognome è Danseglio. |
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; |
Visualizza i valori nei campi IDProdotto e NomeProdotto nella tabella Prodotti per i record in cui il valore IDCategoria corrisponde al valore IDCategoria specificato in una maschera Nuovi prodotti aperta. |
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; |
Calcola il prezzo complessivo medio per gli ordini il cui valore incluso nel campo PrezzoComplessivo è superiore a 1000 e lo visualizza in un campo denominato Prezzo complessivo medio. |
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; |
In un campo denominato ConteggioIDProdotto visualizza il numero totale di prodotti per le categorie che includono più di 10 prodotti. |
Espressioni per le tabelle
Le due modalità di utilizzo delle espressioni più comuni nelle tabelle consistono nell'assegnazione di un valore predefinito e nella creazione di una regola di convalida.
Valori predefiniti dei campi
Quando si progetta un database, si può scegliere di assegnare un valore predefinito a un campo o a un controllo. Access fornisce quindi il valore predefinito quando viene creato un nuovo record contenente il campo o quando viene creato un oggetto che contiene il controllo. Le espressioni nella tabella seguente rappresentano i valori predefiniti di esempio per un campo o un controllo. Se un controllo è associato a un campo incluso in una tabella e il campo ha un valore predefinito, il valore predefinito del controllo avrà la precedenza.
Campo |
Espressione |
Valore di campo predefinito |
---|---|---|
Quantità |
1 |
1 |
Areageografica |
"MT" |
MT |
Areageografica |
"New York, N.Y." |
New York, N.Y. Se il valore contiene segni di punteggiatura, sarà necessario racchiuderlo tra virgolette. |
Fax |
"" |
Stringa di lunghezza zero che indica che, per impostazione predefinita, questo campo non deve contenere un valore Null, ma deve essere vuoto |
Data ordine |
Date( ) |
Data odierna |
Scadenza |
Date() + 60 |
Data successiva di 60 giorni alla data odierna |
Regole di convalida campo
È possibile creare una regola di convalida per un campo o un controllo usando un'espressione. Quindi, Access applica la regola quando vengono immessi dati nel campo o nel controllo. Per creare una regola di convalida, modificare la proprietà ValidoSe del campo o del controllo. Si consiglia anche di impostare la proprietà MessaggioErrore, che contiene il testo visualizzato in Access quando viene violata la regola di convalida. Se non si imposta la proprietà MessaggioErrore, Access visualizza un messaggio di errore predefinito.
Gli esempi nella tabella seguente mostrano le espressioni di regole di convalida per la proprietà ValidoSe e il testo associato per la proprietà MessaggioErrore.
Proprietà ValidoSe |
Proprietà MessaggioErrore |
---|---|
<> 0 |
Immettere un valore diverso da zero. |
0 Or > 100 |
Il valore deve essere uguale a 0 o maggiore di 100. |
Like "K???" |
Il valore deve essere costituito da una stringa di quattro caratteri che inizia con la lettera K. |
< #1/1/2017# |
Immettere una data antecedente a 01/01/2017. |
>= #1/1/2017# And < #1/1/2008# |
La data deve essere compresa nell'anno 2017. |
Per altre informazioni sulla convalida di dati, vedere l'articolo Creare una regola di convalida per convalidare i dati in un campo.
Espressioni di macro
In alcuni casi è possibile eseguire un'azione o una serie di azioni in una macro solo se si verifica una condizione specifica. Si supponga, ad esempio, di desiderare che un'azione venga eseguita solo quando il valore della casella di testo contatore è 10. Usare un'espressione per definire la condizione in un blocco If:
[Counter]=10
Come per la proprietà ValidoSe , l'espressione in un blocco If è un'espressione condizionale. Deve restituire un valore True o False. L'operazione viene eseguita solo quando la condizione è vera.
Usare questa espressione per eseguire l'azione |
If |
---|---|
[City]="Paris" |
Parigi è il valore Città nel campo della maschera da cui è stata eseguita la macro. |
DCount("[OrderID]", "Orders") > 35 |
Il numero totale di voci nel campo IDOrdine della tabella Ordini è maggiore di 35. |
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 |
Il numero totale di voci nella tabella Dettagli ordine il cui campo IDOrdine corrisponde al campo IDOrdine della maschera Ordini è maggiore di tre. |
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# |
Il valore del campo DataSpedizione della maschera da cui viene eseguita la macro non è antecedente al 2 febbraio 2017 né successivo al 2 marzo 2017. |
Forms![Products]![UnitsInStock] < 5 |
Il valore del campo ScorteInMagazzino della maschera Prodotti è minore di 5. |
IsNull([FirstName]) |
Il valore Nome della maschera da cui viene eseguita la macro è Null, ovvero non contiene alcun valore. Questa espressione equivale a [Nome] Is Null. |
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 |
Il valore del campo PaeseAreageografica della maschera da cui viene eseguita la macro è UK e il valore del campo TotaleOrdini della maschera TotaliVendite è maggiore di 100. |
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 |
Il valore del campo PaeseAreageografica della maschera da cui viene eseguita la macro è Francia, Italia o Spagna e il codice postale non è costituito da 5 caratteri. |
MsgBox("Confirm changes?",1)=1 |
Si fa clic su OK in una finestra di dialogo visualizzata dalla funzione MsgBox. Se si fa clic su Annulla nella finestra di dialogo, Access ignora l'azione. |
Vedere anche
Usare il Generatore di espressioni