Partilhar via


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

  1. Adicione um controlo de Text input e dê-lhe o nome Text1, caso não tenha este nome por predefinição.

  2. Em Text1, escreva 30.

  3. 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.

  4. Em Text1, escreva 15.

    O controlo Label mostra Encomendar MUITO mais! porque o valor de Text1 é menor do que 20.

  5. Em Text1, escreva 50.

    O controlo Label mostra o valor que escreveu porque é superior a 40.