Função IIf

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

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

Você pode usar IIf qualquer lugar que possa usar expressões. Use IIf para determinar se outra expressão é verdadeira ou falsa. Se a expressão for verdadeira, IIf retornará um valor. Se for falso, IIf retornará outro valor. Especifique os valores que IIf retornam.

Confira alguns exemplos

Sintaxe

IIf(expr, truepart, falsepart)

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

Argumento Descrição
expr Obrigatório. Expressão a ser avaliada.
truepart Obrigatório. Valor ou expressão retornado se expr for True.
falsepart Obrigatório. Valor ou expressão retornado se expr for False.

Comentários

IIf sempre avalia ambos truepart e falsepart, mesmo que ele retorne apenas um deles. Devido a esse comportamento, observe os efeitos colaterais indesejados. Por exemplo, se a avaliação falsepart resultar em um erro de divisão por zero, ocorrerá um erro mesmo que expr seja True.

Exemplos

Usar IIf em um formulário ou relatório

Suponha que você tenha uma Customers tabela que contenha um campo chamado CountryRegion. Em um formulário, você deseja mostrar se o italiano é a primeira língua do contato. Você pode adicionar um controle e usar IIf em sua Control Source propriedade:

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

Quando você abre o formulário no Modo de Exibição de Formulário, o controle é exibido Italian sempre que o valor for CountryRegionItaly. Ele é Some other language exibido sempre que CountryRegion tem qualquer outro valor.

Usar IIf em expressões complexas

Você pode usar qualquer expressão em qualquer parte de uma instrução IIf . Você também pode aninhar IIf expressões, o que permite avaliar uma série de expressões dependentes. Para continuar com o exemplo anterior, talvez você queira testar vários valores diferentes CountryRegion e exibir o idioma apropriado 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 IIf interna. Como cada função aninhada é o falsepart argumento da função que a IIf contém, o texto Some other language será retornado somente se todos os expr argumentos das IIf funções forem avaliados como False.IIf

Para outro exemplo, suponha que você trabalhe em uma biblioteca. O banco de dados da biblioteca tem uma tabela chamada Check Outs que contém um campo chamado Due Date, que contém a data em que um determinado livro deve voltar. Você pode criar um formulário que mostra o status de um item de check-out em um controle usando a IIf função na propriedade desse Control Source controle:

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

Quando você abre o formulário no Modo de Exibição de Formulário, o controle exibe OVERDUE se o valor de Due Date for menor que a data atual, Due today se ele for igual à data atual e Not Yet Due de outra forma.

Observação

Para usar operadores lógicos como And ou Or no expr argumento da IIf função, você deve incluir a expressão lógica na função Eval . Confira a tabela de exemplo a seguir.

Usar IIf em uma consulta

A IIf função geralmente é usada para criar campos calculados em consultas. A sintaxe é a mesma, exceto que em uma consulta você deve prefigurar a expressão com um alias de campo e um cólon (:) em vez de um sinal igual (=). Para usar o exemplo anterior, digite o seguinte na linha Campo da grade de design de consulta:

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

Nesse caso, Language: é o alias de campo.

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

Usar IIf no código VBA

Observação

Os exemplos a seguir mostram como usar essa função em um módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência do Desenvolvedor na lista suspensa ao lado de Pesquisar e insira um ou mais termos na caixa de pesquisa.

Este exemplo usa a IIf função para avaliar o TestMe parâmetro do CheckIt procedimento e retorna a palavra Large se a quantidade for maior que 1000. Caso contrário, ele retorna 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", retorne "Chicago". Caso contrário, se [AirportCode] for "ATL", retorne "Atlanta". Caso contrário, se [AirportCode] for "SEA", retorne "Seattle". Caso contrário, retorne "Other".

  2. Expressão:

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

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

  3. Expressão:

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

    Resultado: se [PurchaseDate] for anterior a 1/1/2008, retorne "Old". Caso contrário, retorne "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, retorne "OK". Caso contrário, retorne "Out of calibration".

  5. Expressão:

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

    Resultado: se [CountryRegion] for "Canada", "USA"ou "Mexico", retornar "North America". Caso contrário, retorne "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 maior, retorne "A". Caso contrário, se [Average] for 80 ou maior, retorne "B". Caso contrário, se [Average] for 70 ou maior, retorne "C". Caso contrário, se [Average] for 60 ou maior, retorne "D". Caso contrário, retorne "F".

Observação

Se você estiver usando a IIf função para criar um campo calculado em uma consulta, substitua o sinal igual (=) por um alias de campo e um cólon (:). Por exemplo, Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).