Função Ise

Aplica-se A
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Devolve uma de duas partes, dependendo da avaliação de uma expressão.

Pode utilizar IIf qualquer local onde possa utilizar expressões. Utilize IIf para determinar se outra expressão é verdadeira ou falsa. Se a expressão for verdadeira, IIf devolve um valor. Se for falso, IIf devolve outro valor. Especifique os valores devolvidos IIf .

Ver alguns exemplos

Sintaxe

IIf(expr, truepart, falsepart)

A IIf sintaxe da função tem estes argumentos:

Argumento Descrição
expr Obrigatório. Expressão que pretende avaliar.
truepart Obrigatório. Valor ou expressão devolvido se expr for True.
falsepart Obrigatório. Valor ou expressão devolvido se expr for False.

Comentários

IIf avalia sempre e truepartfalsepart, mesmo que devolva apenas um deles. Devido a este comportamento, procure efeitos colaterais indesejados. Por exemplo, se a avaliação falsepart resultar num erro de divisão por zero, ocorrerá um erro mesmo que expr seja True.

Exemplos

Utilizar IIf num formulário ou relatório

Suponha que tem uma Customers tabela que contém um campo com o nome CountryRegion. Num formulário, quer mostrar se o italiano é o primeiro idioma do contacto. Pode adicionar um controlo e utilizar IIf na respetiva Control Source propriedade:

=IIf([CountryRegion]="Italy", "Italian", "Some other language")

Quando abre o formulário na Vista de Formulário, o controlo é apresentado Italian sempre que o valor de CountryRegion for Italy. É apresentado Some other language sempre que CountryRegion tiver outro valor.

Utilizar IIf em expressões complexas

Pode utilizar qualquer expressão em qualquer parte de uma instrução IIf . Também pode aninhar IIf expressões, o que lhe permite avaliar uma série de expressões dependentes. Para continuar com o exemplo anterior, poderá querer testar vários valores diferentes CountryRegion e, em seguida, apresentar o idioma adequado com base no valor:

=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))

O texto Some other language é o falsepart argumento da função mais interna IIf . Uma vez que cada função aninhada IIf é o falsepart argumento da função que a IIf contém, o texto Some other language é devolvido apenas se todos os expr argumentos das IIf funções forem avaliados como False.

Por outro exemplo, suponha que trabalha numa biblioteca. A base de dados da biblioteca tem uma tabela com o nome Check Outs que contém um campo chamado Due Date, que contém a data em que um determinado livro deve ser devolvido. Pode criar um formulário que mostre o estado de um item com saída dada num controlo ao utilizar a IIf função na propriedade desse controlo Control Source :

=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))

Quando abre o formulário na Vista de Formulário, o controlo é apresentado OVERDUE se o valor de Due Date for menor do que a data atual, Due today se for igual à data atual e Not Yet Due caso contrário.

Nota

Para utilizar operadores lógicos, como And ou Or no expr argumento da IIf função, tem de incluir a expressão lógica na função Eval . Veja os exemplos na tabela seguinte.

Utilizar IIf numa consulta

A IIf função é frequentemente utilizada para criar campos calculados em consultas. A sintaxe é a mesma, exceto que numa consulta tem de preceder a expressão com um alias de campo e dois pontos (:) em vez de um sinal de igual (=). Para utilizar o exemplo anterior, escreva o seguinte na linha Campo da grelha de estrutura da consulta:

Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")

Neste caso, Language: é o alias de campo.

Para obter mais informações sobre como criar consultas e campos calculados, consulte Criar uma consulta selecionar simples.

Utilizar IIf no código VBA

Nota

Os exemplos seguintes mostram como utilizar esta função num módulo Visual Basic for Applications (VBA). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência do Programador na lista pendente junto a Procurar e, em seguida, introduza um ou mais termos na caixa de pesquisa.

Este exemplo utiliza a IIf função para avaliar o TestMe parâmetro do CheckIt procedimento e devolve a palavra Large se a quantidade for superior a 1000. Caso contrário, devolve a palavra Small.

Function CheckIt(TestMe As Integer)
    CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

Mais exemplos

  1. Expressão:

    =IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))
    

    Resultado: se [AirportCode] for "ORD", devolve "Chicago". Caso contrário, se [AirportCode] for "ATL", devolva "Atlanta". Caso contrário, se [AirportCode] for "SEA", devolva "Seattle". Caso contrário, devolva "Other".

  2. Expressão:

    =IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))
    

    Resultado: se [ShipDate] for anterior à data de hoje, devolva "Shipped". Caso contrário, se [ShipDate] for igual à data de hoje, devolva "Shipping today". Caso contrário, devolva "Unshipped".

  3. Expressão:

    =IIf([PurchaseDate]<#1/1/2008#,"Old","New")
    

    Resultado: se [PurchaseDate] for anterior a 1/1/2008, devolva "Old". Caso contrário, devolva "New".

  4. Expressão:

    =IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")
    

    Resultado: se [Volts] estiver entre 12 e 15 e [Amps] estiver entre 0,25 e 0,3, devolva "OK". Caso contrário, devolva "Out of calibration".

  5. Expressão:

    =IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")
    

    Resultado: se [CountryRegion] for "Canada", "USA"ou "Mexico", devolver "North America". Caso contrário, devolva "Other".

  6. Expressão:

    =IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))
    

    Resultado: se [Average] for 90 ou superior, devolva "A". Caso contrário, se [Average] for 80 ou superior, devolva "B". Caso contrário, se [Average] for 70 ou superior, devolva "C". Caso contrário, se [Average] for 60 ou superior, devolva "D". Caso contrário, devolva "F".

Nota

Se estiver a utilizar a IIf função para criar um campo calculado numa consulta, substitua o sinal de igual (=) por um alias de campo e dois pontos (:). Por exemplo, Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).