Funções If e Switch
Aplica-se a: Colunas Dataverse de fórmula de aplicativos de tela Fluxos de área de trabalho CLI de aplicativos Power Pages Power Platform orientados por modelo
Determina se uma condição num conjunto é verdadeira (If) ou se o resultado de uma fórmula corresponde a um valor num conjunto (Switch) e, em seguida, devolve um resultado ou executa uma ação.
Descrição
A função If testa uma ou mais condições até ser encontrado um resultado true. Se for encontrado um resultado deste tipo, é devolvido um valor correspondente. Se não for encontrado um resultado deste tipo, é devolvido um valor predefinido. Em ambos os casos, o valor devolvido poderá ser uma cadeia para ser mostrada, uma fórmula para ser avaliada ou outra forma do resultado.
A função Switch avalia uma fórmula e determina se o resultado corresponde a um valor numa sequência que for especificada. Se for encontrada uma correspondência, é devolvido um valor correspondente. Se não for encontrada, é devolvido um valor predefinido. Em ambos os casos, o valor devolvido poderá ser uma cadeia para ser mostrada, uma fórmula para ser avaliada ou outra forma do resultado.
Se e Switch são muito semelhantes, mas você deve usar a melhor função para a sua situação:
- Utilize If para avaliar condições individuais. A sintaxe mais comum para esta função é If( Condition, ThenResult, DefaultResult ), que fornece o padrão comum "if... then … else …" visto noutras ferramentas de programação.
- Utilize a função If para avaliar várias condições não relacionadas. No Power Apps(ao contrário do Microsoft Excel), pode especificar várias condições sem que seja necessário aninhar fórmulas If.
- Utilize Switch para avaliar uma condição individual face a várias correspondências possíveis. Também pode utilizar a função If neste caso, mas teria de repetir a fórmula para cada possível correspondência.
Pode utilizar ambas as funções em fórmulas de comportamento para ramificar entre duas ou mais ações. Uma ramificação vai acionar uma ação. As condições e as correspondências são avaliadas por ordem e param se uma condição for verdadeira ou se for encontrada uma correspondência.
O espaço em branco é retornado se nenhuma condição for verdadeira, nenhuma correspondência for encontrada e você não especificar um resultado padrão.
Sintaxe
Se( Condição,ThenResult [, DefaultResult ] )
Se(Condição1,ThenResult1 [, Condição2,ThenResult2 , ... [, DefaultResult ] ] )
- Condições - Obrigatório. Fórmula(s) a testar como true. Normalmente, estas fórmulas contêm operadores de comparação (como <, > e =) e testam funções como IsBlank e IsEmpty.
- ThenResults - Obrigatório. O valor correspondente a devolver para uma condição que é avaliada como true.
- DefaultResult - Opcional. O valor a devolver se nenhuma condição for avaliada como true. Se não especificar este argumento, é devolvido blank.
Switch(Fórmula,Match1,Result1 [, Match2,Result2 , ... [, DefaultResult ] ] )
- Fórmula - Obrigatório. Fórmula a avaliar para correspondências. Esta fórmula é avaliada apenas uma vez.
- Jogos - Obrigatório. Valores a comparar com o resultado de Formula. Se for encontrada uma correspondência exata, é devolvido o Resultado correspondente.
- Resultados - Obrigatório. O valor correspondente a devolver quando é encontrada uma correspondência exata.
- DefaultResult - Opcional. Se não for encontrada uma correspondência exata, é devolvido este valor. Se não especificar este argumento, é devolvido blank.
Exemplos
Valores nas fórmulas
Nos exemplos seguintes, um Slider (com o nome Slider1) tem o valor de 25.
Fórmula | Descrição | Resultado |
---|---|---|
Se( Slider1.Value = 25, "Resultado1" ) | A condição é true e é devolvido o resultado correspondente. | "Result1" |
if( Slider1.Value = 25, "Resultado1", "Resultado2" ) | A condição é true e é devolvido o resultado correspondente. | "Result1" |
Se( Slider1.Value > 1000, "Resultado1" ) | A condição é false e não foi fornecido o DefaultResult. | em branco |
Se( Slider1.Value > 1000, "Result1", "Result2" ) | A condição é false, foi fornecido um DefaultResult e é devolvido. | "Result2" |
Se( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) | A primeira condição é true e é devolvido o resultado correspondente. A segunda condição também é true, mas não é avaliada porque aparece mais adiante na lista de argumentos do que uma condição que é avaliada como true. | "Result1" |
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) | A primeira condição é false porque o controlo de deslize não está blank. A segunda condição é true porque o valor do controlo de deslize é um número e o resultado correspondente é devolvido. | "Result2" |
Se( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") | A primeira e a segunda condições são false, foi fornecido um DefaultResult e é devolvido. | "Result3" |
Switch( Slider1.Value, 25, "Resultado1" ) | O valor do controlo de deslize corresponde ao primeiro valor a ser verificado e o resultado correspondente é devolvido. | "Result1" |
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) | O valor do controlo de deslize corresponde ao segundo valor a ser verificado e o resultado correspondente é devolvido. | "Result2" |
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) | O valor do controlo de deslize não corresponde a nenhum valor a ser verificado. Foi fornecido um DefaultResult, pelo que é devolvido. | "DefaultResult" |
Ramificar fórmulas de comportamento
Nestes exemplos, um controlo de Text input com o nome NomePróprio tem escrito o valor "John".
Fórmula | Descrição | Resultado |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | A condição é true, pelo que a função Navigate é executada. Pode utilizar a função IsBlank para testar se um campo de formulário necessário foi preenchido. Se FirstName estivesse blank, esta fórmula não teria qualquer efeito. | verdadeiro O ecrã é alterado para Screen1. |
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() | Sem o operador !, a condição é false, pelo que a função Navigate não é executada. A função Back foi fornecida como DefaultResult, pelo que é executada. | verdadeiro O ecrã volta para o ecrã que estava a ser mostrado antes. |
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) | O valor de FirstName.Text é comparado a "Carlos", "Kirstin" e "John", por esta ordem. É encontrada uma correspondência com "John", pelo que a aplicação navega para Screen3. | verdadeiro O ecrã é alterado para Screen3. |
Passo a passo
Adicione um controlo de Text input e dê-lhe o nome Text1, caso não tenha este nome por predefinição.
Em Text1, escreva 30.
Adicione um controlo Label e defina a respetiva propriedade Text para esta fórmula:
If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )O controlo Label mostra Encomendar mais! porque o valor de Text1 é maior que 20, mas menor que 40.
Em Text1, escreva 15.
O controlo Label mostra Encomendar MUITO mais! porque o valor de Text1 é menor do que 20.
Em Text1, escreva 50.
O controlo Label mostra o valor que escreveu porque é superior a 40.