Usuário com melhor resposta
Iff Aninhado na Expressão

Pergunta
-
Olá a todos!
Alguém sabe como é a sintaxe de uma condição que tem varios iifs aninhados?
Por exemplo:
iif (
( data > data_entrega ) and ( data >= 'dd/mm/yy'), "ghjdldfçfçfggfçg',
iif (
( data > data_entrega ) and ( data >= 'dd/mm/yy'), "ghjdldfçfçfggfçg',
iif (
( data > data_entrega ) and ( data >= 'dd/mm/yy'), "ghjdldfçfçfggfçg',
iif(
( data > data_entrega ) and ( data >= 'dd/mm/yy'), "ghjdldfçfçfggfçg',
Onde eu fecho cada iif ???
Por favor!!!
Obrigada.
Respostas
-
A sintaxe do IIF é
Code BlockIIF( condição, objeto_verdadeiro, objeto_falso)A maneira que a condição é montada independe desta sintaxe, se a sua condição for um AND:
(campo) < DateValue("0000-00-00") and (campo) >= CDate ("0000-00-00")
Voce só precisa colocar-la no lugar da condição da sintaxe:
Code BlockIIF( (campo) < DateValue("0000-00-00") and (campo) >= CDate ("0000-00-00"), valor_verdadeiro, valor_falso)Isso é valido para qualquer condiçao, por ex:
(a>3) ou ((b<10) and (c=5))
fica
Code BlockIIF((a>3) ou ((b<10) and (c=5)), objeto_verdadeiro, objeto_falso)
O que confunde alguns programadores é que o IIF é uma função e portanto ele separa a condição do "valor_verdadeiro"por uma virgula entao voce sempre terá após a sua condição uma virgula antes do objeto_verdadeiro. O funcionamento é parecido com o "IF" de fórmulas do excel.
O expression dialog que me refiro é do Businnes intelligence development studio, quando você seleciona "<Expression>" ele abre uma janela onde você pode escolher a função que você precisa usar. Essa é a janela que estou falando:
http://msdn2.microsoft.com/en-us/library/ms189719.aspx e
http://msdn2.microsoft.com/en-us/library/ms157376.aspx
E nesse link você tem vários exemplos de expressões (inclusive iif) que vale a pena dar uma olhada.
http://msdn2.microsoft.com/en-us/library/ms157328.aspx
Espero que ajude
Att
Boreki
- Marcado como Resposta jaqque sábado, 22 de agosto de 2009 15:05
Todas as Respostas
-
Code Block
iif("Condicao 1", "Valor 1",
iif("Condição 2", "Valor 2",
iif( "Condição 3", "Valor 3", "Valor 4")))
E assim por diante. O valor 4 seria o ultimo else, quando nenhuma condiça'é satisfeita, depois disso voce fecha todos os outros iifs.
Sempre que possível use o Expression Dialog do Reporting services que ele mostra a sintaxe das funções e fica mais fácil de visualizar.
Abraço
Boreki
-
Aproveitando, gostaria de tirar uma duvida parecida.
Quando se usa 'or, and, etc...' A Sintaxe fica assim: ((campo) or (campo)) certo?
E no caso
IIf ((campo) < DateValue("0000-00-00")) and ((campo) >= CDate ("0000-00-00")) a sintaxe é assim msm ou:
IIf ((campo) < DateValue("0000-00-00") and (campo) >= CDate ("0000-00-00")) - Apenas com dois parenteses fechando
no final.
Ahh aproveitando, onde posso está essa Expression Dialog no Reporting Services para que eu possa tirar duvidas desse tipo?Obrigada
Vah
-
A sintaxe do IIF é
Code BlockIIF( condição, objeto_verdadeiro, objeto_falso)A maneira que a condição é montada independe desta sintaxe, se a sua condição for um AND:
(campo) < DateValue("0000-00-00") and (campo) >= CDate ("0000-00-00")
Voce só precisa colocar-la no lugar da condição da sintaxe:
Code BlockIIF( (campo) < DateValue("0000-00-00") and (campo) >= CDate ("0000-00-00"), valor_verdadeiro, valor_falso)Isso é valido para qualquer condiçao, por ex:
(a>3) ou ((b<10) and (c=5))
fica
Code BlockIIF((a>3) ou ((b<10) and (c=5)), objeto_verdadeiro, objeto_falso)
O que confunde alguns programadores é que o IIF é uma função e portanto ele separa a condição do "valor_verdadeiro"por uma virgula entao voce sempre terá após a sua condição uma virgula antes do objeto_verdadeiro. O funcionamento é parecido com o "IF" de fórmulas do excel.
O expression dialog que me refiro é do Businnes intelligence development studio, quando você seleciona "<Expression>" ele abre uma janela onde você pode escolher a função que você precisa usar. Essa é a janela que estou falando:
http://msdn2.microsoft.com/en-us/library/ms189719.aspx e
http://msdn2.microsoft.com/en-us/library/ms157376.aspx
E nesse link você tem vários exemplos de expressões (inclusive iif) que vale a pena dar uma olhada.
http://msdn2.microsoft.com/en-us/library/ms157328.aspx
Espero que ajude
Att
Boreki
- Marcado como Resposta jaqque sábado, 22 de agosto de 2009 15:05