Sintaxe
IIF( <expressão lógica>, <expressão 1>, <expressão 2> )
Função
Retorna o resultado de uma expressão baseado em uma condição.
Argumentos
< expressão lógica>
Define uma condição lógica a ser avaliada como verdadeira (.T.) ou falsa (.F.).
< expressão 1>
Define a expressão a ser processada quando o resultado da expressão lógica for verdadeiro (.T.).
< expressão 2>
Define a expressão a ser processada quando o resultado da expressão lógica for falso (.F.).
Utilização
A função IIF() é utilizada para o processamento condicional de uma expressão, de acordo com uma condição especificada através da expressão lógica. Se a expressão lógica for avaliada como verdadeira (.T.), a expressão 1 será processada. Se a expressão lógica for avaliada como falsa (.F.), a expressão 2 será processada.
A expressão lógica pode ser qualquer condição lógica válida, como por exemplo: nValor > 0, A = B, etc.
As expressões 1 e 2 poderão ser expressões de qualquer tipo de dado (caracter, numérico, data ou lógico), não sendo necessário que ambas resultem no mesmo tipo de dado.
Dicas
A função IIF() é muito flexível e útil, pois possui inúmeras aplicações vantajosas:
Fornece um meio de avaliar uma condição dentro de uma expressão. Através dela é possível converter expressões lógicas em outro tipo de dado. Por exemplo:
IIF(DELETED(), “Deletado”, “Ativo”)
Quando possível, substitui o comando IF … ENDIF, economizando tempo de processamento.
Exemplos
1 2 3 4 5 6 7 |
// Verifica se a divisão pode ser realizada LOCAL nCoef := IIF(nCoef > 0, nValor / nCoef, 0) // Verifica o sinal de um número LOCAL nCoef := IIF(nCoef >= 0, “Positivo”, “Negativo”) |
A função IIF() pode ser utilizada para substituir a seguinte estrutura de programação:
1 2 3 4 5 6 7 8 9 |
IF cSexo == “F” cNome := “Sra. “ + cNome ELSE cNome := “Sr. “ + cNome ENDIF |
A estrutura acima é equivalente à:
1 |
cNome := IIF(cSexo == “F”, “Sra. “, “Sr. “) + cNome |
Fernando Bueno
Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.
Siga-me no Linked In