In base alla valutazione di un'espressione, restituisce una delle due parti dell'espressione.
Le espressioni possono essere usate IIf ovunque. Consente IIf di determinare se un'altra espressione è vera o falsa. Se l'espressione è vera, IIf restituisce un valore. Se è false, IIf restituisce un altro valore. L'utente specifica i valori restituiti IIf .
Sintassi
IIf(expr, truepart, falsepart)
Gli IIf argomenti della sintassi della funzione sono i seguenti:
| Argomento | Descrizione |
|---|---|
expr |
Obbligatorio. Espressione da valutare. |
truepart |
Obbligatorio. Valore o espressione restituito se expr è True. |
falsepart |
Obbligatorio. Valore o espressione restituito se expr è False. |
Osservazioni
IIf Valuta sempre entrambi e truepartfalsepart, anche se ne restituisce solo uno. A causa di questo comportamento, fai attenzione agli effetti collaterali indesiderati. Ad esempio, se la valutazione falsepart restituisce un errore di divisione per zero, si verifica un errore anche se expr è True.
Esempi
Uso IIf in una maschera o in un report
Si supponga di avere una Customers tabella che contiene un campo denominato CountryRegion. In una maschera si vuole indicare se l'italiano è la prima lingua del contatto. È possibile aggiungere un controllo e usare IIf nella relativa Control Source proprietà:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
Quando si apre la maschera in visualizzazione Maschera, il controllo viene visualizzato Italian ogni volta che il valore per CountryRegion è Italy. Viene visualizzato Some other language ogni volta che CountryRegion ha un altro valore.
Uso IIf in espressioni complesse
È possibile usare qualsiasi espressione in qualsiasi parte di un'istruzione IIf . È inoltre possibile annidare IIf espressioni, che consentono di valutare una serie di espressioni dipendenti. Per continuare con l'esempio precedente, potrebbe essere opportuno testare diversi valori e CountryRegion quindi visualizzare la lingua appropriata in base al valore:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
Il testo Some other language è l'argomento falsepart della funzione più IIf interna. Poiché ogni funzione annidata è l'argomento della IIf funzione che la contiene, il testo Some other language viene restituito solo se tutti gli expr argomenti delle IIf funzioni restituiscono IIfFalse.falsepart
Per un altro esempio, supponiamo di lavorare in una raccolta. Il database della biblioteca ha una tabella denominata Check Outs che contiene un campo chiamato Due Date, che contiene la data in cui un particolare libro deve essere restituito. È possibile creare una maschera che mostri lo stato di un elemento estratto in un controllo usando la IIf funzione nella proprietà del Control Source controllo:
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
Quando si apre la maschera in visualizzazione Maschera, il controllo visualizza OVERDUE se il valore di Due Date è minore della data corrente, Due today se è uguale alla data corrente e Not Yet Due in caso contrario.
Nota
Per usare operatori logici come And OR Or nell'argomento expr della IIf funzione, è necessario racchiudere l'espressione logica nella funzione Eval . Vedere la tabella di esempio seguente.
Uso IIf in una query
La IIf funzione viene spesso usata per creare campi calcolati nelle query. La sintassi è la stessa, con la differenza che in una query è necessario anteporre all'espressione un alias di campo e i due punti (:) anziché un segno di uguale (=). Per usare l'esempio precedente, digitare quanto segue nella riga Campo della griglia di struttura della query:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
In questo caso, Language: è l'alias del campo.
Per altre informazioni sulla creazione di query e campi calcolati, vedere Creare una query di selezione semplice.
Uso IIf nel codice VBA
Nota
Gli esempi seguenti mostrano come utilizzare questa funzione in un modulo di Visual Basic, Applications Edition (VBA). Per altre informazioni sull'uso di VBA, selezionare Riferimento per sviluppatori nell'elenco a discesa accanto a Cerca e quindi immettere uno o più termini nella casella di ricerca.
In questo esempio viene usata la IIf funzione per valutare il TestMeCheckIt parametro della routine e restituisce la parola Large se l'importo è maggiore di 1000. In caso contrario, restituisce la parola Small.
Function CheckIt(TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
Altri esempi
Espressione:
=IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))Risultato: Se
[AirportCode]è"ORD", return"Chicago". Altrimenti, se[AirportCode]è"ATL", return"Atlanta". Altrimenti, se[AirportCode]è"SEA", return"Seattle". In caso contrario, restituire"Other".Espressione:
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))Risultato: se
[ShipDate]è precedente alla data odierna, restituire"Shipped". Altrimenti, se[ShipDate]è uguale alla data odierna, restituire"Shipping today". In caso contrario, restituire"Unshipped".Espressione:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")Risultato: Se
[PurchaseDate]è precedente a1/1/2008, return"Old". In caso contrario, restituire"New".Espressione:
=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")Risultato: Se
[Volts]è compreso tra 12 e 15 ed[Amps]è compreso tra 0,25 e 0,3, restituisce"OK". In caso contrario, restituire"Out of calibration".Espressione:
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")Risultato: Se
[CountryRegion]è"Canada","USA", o"Mexico", return"North America". In caso contrario, restituire"Other".Espressione:
=IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))Risultato: Se
[Average]è 90 o maggiore, restituire"A". Altrimenti, se[Average]è 80 o maggiore, restituisce"B". Altrimenti, se[Average]è 70 o maggiore, restituire"C". Altrimenti, se[Average]è uguale o superiore a 60, restituisce"D". In caso contrario, restituire"F".
Nota
Se si usa la IIf funzione per creare un campo calcolato in una query, sostituire il segno di uguale (=) con un alias di campo e i due punti (:). Ad esempio, Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).