Funções If e Switch

Aplica-se a: Aplicações de tela Colunas de fórmula do Dataverse Fluxos de ambiente de trabalho Aplicações condicionadas por modelo Power Platform CLI

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.

As funções If e Switch são bastante parecidas, mas deve utilizar a que melhor se adequa à 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.

É obtido Em branco se nenhuma condição for true, se não forem encontradas correspondências e se não especificar um resultado predefinido.

Sintaxe

If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condition(s) – 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.
  • ThenResult(s) – 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( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • Formula – Obrigatório. Fórmula a avaliar para correspondências. Esta fórmula é avaliada apenas uma vez.
  • Match(s) – Obrigatório. Valores a comparar com o resultado de Formula. Se for encontrada uma correspondência exata, é devolvido o Resultado correspondente.
  • Result(s) – 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
If( Slider1.Value = 25, "Result1" ) A condição é true e é devolvido o resultado correspondente. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) A condição é true e é devolvido o resultado correspondente. "Result1"
If( Slider1.Value>1000, "Result1" ) A condição é false e não foi fornecido o DefaultResult. em branco
If( Slider1.Value>1000, "Result1", "Result2" ) A condição é false, foi fornecido um DefaultResult e é devolvido. "Result2"
If( 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"
If( 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, "Result1" ) 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. true

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

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

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.