In base alla valutazione di un'espressione, restituisce una delle due parti dell'espressione.
È possibile usare IIf qualsiasi posizione in cui è possibile usare le espressioni. Consente IIf di determinare se un'altra espressione è vera o falsa. Se l'espressione è vera, IIf restituisce un valore. Se è falso, IIf restituisce un altro valore. Specificare 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 restituita se expr è True. |
falsepart |
Obbligatorio. Valore o espressione restituita se expr è False. |
Osservazioni
IIf valuta sempre entrambi truepart e falsepart, anche se ne restituisce solo uno. A causa di questo comportamento, guardare per gli effetti collaterali indesiderati. Ad esempio, se la valutazione restituisce falsepart un errore di divisione per zero, si verifica un errore anche se expr è True.
Esempi
Usare IIf in una maschera o un report
Si supponga di avere una Customers tabella che contiene un campo denominato CountryRegion. In un modulo si vuole mostrare se l'italiano è la prima lingua del contatto. È possibile aggiungere un controllo e usarlo 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 di CountryRegion è Italy. Viene visualizzata Some other language ogni volta che CountryRegion è presente un altro valore.
Usare IIf in espressioni complesse
È possibile usare qualsiasi espressione in qualsiasi parte di un'istruzione IIf . È anche possibile annidare IIf le espressioni, che consentono di valutare una serie di espressioni dipendenti. Per continuare con l'esempio precedente, è consigliabile 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 IIf è l'argomento falsepart della IIf funzione che la contiene, il testo Some other language viene restituito solo se tutti gli expr argomenti delle IIf funzioni restituiscono False.
Si supponga, ad esempio, di lavorare in una raccolta. Il database di libreria ha una tabella denominata Check Outs che contiene un campo denominato Due Date, che contiene la data di scadenza di un determinato libro. È 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 viene visualizzato 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 o Or nell'argomento expr della IIf funzione, è necessario racchiudere l'espressione logica nella funzione Eval . Vedere la tabella di esempio seguente.
Usare IIf in una query
La IIf funzione viene spesso usata per creare campi calcolati nelle query. La sintassi è la stessa, tranne per il fatto che in una query è necessario anteporre all'espressione un alias di campo e 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.
Usare IIf nel codice VBA
Nota
Gli esempi seguenti illustrano come usare questa funzione in un modulo di Visual Basic, Applications Edition (VBA). Per altre informazioni sull'uso di VBA, selezionare Riferimenti per sviluppatori nell'elenco a discesa accanto a Cerca e quindi immettere uno o più termini nella casella di ricerca.
Questo esempio usa la IIf funzione per valutare il TestMe parametro della CheckIt routine e restituisce la parola Large se il valore è 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", restituisce"Chicago". In caso contrario, se[AirportCode]è"ATL", restituisce"Atlanta". In caso contrario, se[AirportCode]è"SEA", restituisce"Seattle". In caso contrario, restituisci"Other".Espressione:
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))Risultato: se
[ShipDate]è anteriore alla data odierna, restituisce"Shipped". In caso contrario, se[ShipDate]è uguale alla data odierna, restituisce"Shipping today". In caso contrario, restituisci"Unshipped".Espressione:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")Risultato: se
[PurchaseDate]è precedente a1/1/2008, restituisce"Old". In caso contrario, restituisci"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, restituisci"Out of calibration".Espressione:
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")Risultato: se
[CountryRegion]è"Canada","USA"o"Mexico", restituisce"North America". In caso contrario, restituisci"Other".Espressione:
=IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))Risultato: se
[Average]è maggiore di 90, restituisce"A". In caso contrario, se[Average]è maggiore di 80, restituire"B". In caso contrario, se[Average]è maggiore di 70, restituire"C". In caso contrario, se[Average]è maggiore di 60, restituire"D". In caso contrario, restituisci"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")).