Funções If e Switch

Aplica-se a: Aplicativos de tela Colunas de fórmula do Dataverse Fluxos da área de trabalho Aplicativos baseados em modelo Power Platform CLI

Determina se qualquer condição em um conjunto é verdadeira (If) ou se o resultado de uma fórmula corresponde a qualquer valor em um conjunto (Switch) e, em seguida, retorna um resultado ou executa uma ação.

Descrição

A função If testa uma ou mais condições até que um resultado true seja encontrado. Se tal resultado for encontrado, um valor correspondente será retornado. Se tal resultado não for encontrado, um valor padrão será retornado. Em ambos os casos, o valor retornado pode ser uma cadeia de caracteres para mostrar, uma fórmula para avaliar ou outra forma de resultado.

A função Switch avalia uma fórmula e determina se o resultado corresponde a qualquer valor em uma sequência especificada. Se uma correspondência for encontrada, um valor correspondente será retornado. Se nenhuma correspondência for encontrada, um valor padrão será retornado. Em ambos os casos, o valor retornado pode ser uma cadeia de caracteres para mostrar, uma fórmula para avaliar ou outra forma de resultado.

If e Switch são muito semelhantes, mas a melhor função para sua situação é a que deve ser usada:

  • Use If para avaliar uma única condição. A sintaxe mais comum para essa função é If( Condition, ThenResult, DefaultResult ), que fornece o padrão "if… depois... else …" visto em outras ferramentas de programação.
  • Use If para avaliar várias condições não relacionadas. No Power Apps (ao contrário do Microsoft Excel), é possível especificar várias condições sem precisar aninhar fórmulas If.
  • Use Switch para avaliar uma única condição em relação a várias correspondências possíveis. Também é possível usar If nesse caso, mas seria necessário repetir a fórmula para cada correspondência possível.

É possível usar ambas as funções em fórmulas de comportamento para o branch entre duas ou mais ações. Apenas um branch disparará uma ação. Condições e correspondências são avaliadas em ordem e param se uma condição for true ou se uma correspondência for encontrada.

Blank será retornado se nenhuma condição for true, se não houver correspondências e se um resultado padrão não for especificado.

Sintaxe

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

  • Condition(s) - obrigatório. Fórmulas a serem testadas para true. Normalmente, essas fórmulas contêm operadores de comparações (como <, >, e =) e funções de teste como IsBlank e IsEmpty.
  • ThenResult(s) - obrigatório. O valor correspondente para retornar uma condição que é avaliada como verdadeira.
  • DefaultResult - opcional. Valor a ser retornado se nenhuma das condições for avaliada como true. Se você não especificar esse argumento, o valor retornará em branco.

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • Formula - obrigatório. Fórmula a ser avaliada para correspondências. Essa fórmula é avaliada apenas uma vez.
  • Match(s) - obrigatório. Valores a serem comparados com o resultado de Formula. Se uma correspondência exata for encontrada, o Resultado correspondente será retornado.
  • Result(s) - obrigatório. O valor correspondente a ser retornado quando uma correspondência exata for encontrada.
  • DefaultResult - opcional. Se uma correspondência exata não for encontrada, o valor será retornado. Se você não especificar esse argumento, o valor retornará em branco.

Exemplos

Valores em fórmulas

Nos exemplos a seguir, um controle Slider (chamado Slider1) tem um valor de 25.

Fórmula Description Result
If( Slider1.Value = 25, "Result1" ) A condição é verdadeira e o resultado correspondente é retornado. "Resultado1"
If( Slider1.Value = 25, "Result1", "Result2" ) A condição é verdadeira e o resultado correspondente é retornado. "Resultado1"
If( Slider1.Value>1000, "Resultado1") A condição é false e não é fornecido nenhum DefaultResult. blank
If( Slider1.Value>1000, "Resultado1", "Resultado2") A condição é false, um DefaultResult foi fornecido e retornado. "Resultado2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) A primeira condição é true e o resultado correspondente é retornado. A segunda condição é também true, mas não é avaliada, porque aparece na lista de argumentos depois de uma condição ter sido avaliada como true. "Resultado1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) A primeira condição é false, porque o controle deslizante não está em branco. A segunda condição é true porque o valor do controle deslizante é um número e o resultado correspondente será retornado. "Resultado2"
If(Slider1.Value>1000, "Resultado1" Slider1.Value>50, "Resultado2", "Resultado3") A primeira e segunda condições são false e o DefaultResult foi fornecido e retornado. "Resultado3"
Switch( Slider1.Value, 25, "Resultado1" ) O valor do controle deslizante corresponde ao primeiro valor a ser verificado e o resultado correspondente é retornado. "Resultado1"
Switch( Slider1.Value, 20, "Resultado1", 25, "Resultado2", 30, "Resultado3" ) O valor do controle deslizante corresponde ao segundo valor a ser verificado e o resultado correspondente é retornado. "Resultado2"
Switch( Slider1.Value, 20, "Resultado1", 10, "Resultado2", 0, "Resultado3", "DefaultResult" ) O valor do controle deslizante não corresponde a qualquer valor a ser verificado. Um DefaultResult foi fornecido, portanto, será retornado. "DefaultResult"

Ramificação em fórmulas de comportamento

Nos exemplos a seguir, um controle Text input chamado FirstName tem o valor “John” digitado nele.

Fórmula Descrição Resultado
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) A condição é true, então a função Navigate é executada. Você pode usar a função IsBlank para testar se um campo de formulário obrigatório foi preenchido. Se FirstName estivesse blank, essa fórmula não teria efeito. true

A exibição é alterada para Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Sem o operador !, a condição é false e a função Navigate não é executada. A função Back foi fornecida como DefaultResult, então, será executada. true

A exibição volta para a tela que estava em exibição anteriormente.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) O valor de FirstName.Text é comparado com "Carlos", "Kirstin" e "John", nessa ordem. Uma correspondência é encontrada para "John", então o aplicativo navega para Screen3. true

A exibição é alterada para Screen3.

Passo a passo

  1. Adicione um controle Text input e nomeie-o Text1 caso ele não tenha esse nome por padrão.

  2. Em Text1, digite 30.

  3. Adicione um controle de Label e defina sua propriedade Texto para esta fórmula:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    O controle Label mostra Order more!, porque o valor de Text1 é maior que 20, mas menor que 40.

  4. Em Text1, digite 15.

    O controle Label mostra Order MANY more!, porque o valor de Text1 é menor que 20.

  5. Em Text1, digite 50.

    O controle Label mostra o valor digitado, pois ele é maior do que 40.