Funções Se e Parâmetro no PowerAppsIf and Switch functions in PowerApps

Determina se uma condição num conjunto é verdadeira (Se) ou se o resultado de uma fórmula corresponde a um valor num conjunto (Parâmetro) e, em seguida, devolve um resultado ou executa uma ação.Determines whether any condition in a set is true (If) or the result of a formula matches any value in a set (Switch) and then returns a result or executes an action.

DescriçãoDescription

A função Se testa uma ou mais condições até ser encontrado um resultado verdadeiro.The If function tests one or more conditions until a true result is found. Se for encontrado um resultado deste tipo, é devolvido um valor correspondente.If such a result is found, a corresponding value is returned. Se não for encontrado um resultado deste tipo, é devolvido um valor predefinido.If no such result is found, a default value is returned. 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.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

A função Parâmetro avalia uma fórmula e determina se o resultado corresponde a um valor numa sequência que for especificada.The Switch function evaluates a formula and determines whether the result matches any value in a sequence that you specify. Se for encontrada uma correspondência, é devolvido um valor correspondente.If a match is found, a corresponding value is returned. Se não for encontrada, é devolvido um valor predefinido.If no match is found, a default value is returned. 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.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

Se e Parâmetro são bastante parecidas, mas deve utilizar a que melhor se adequa à sua situação:If and Switch are very similar, but you should use the best function for your situation:

  • Utilize Se para avaliar condições individuais.Use If to evaluate a single condition. A sintaxe mais comum para esta função é Se( Condição, ResultadoEntão, ResultadoPredefinido ), que fornece o padrão comum “se...The most common syntax for this function is If( Condition, ThenResult, DefaultResult ), which provides the common “if … então...then … outro...”else …” visto noutras ferramentas de programação.pattern seen in other programming tools.
  • Utilize Se para avaliar várias condições não relacionadas.Use If to evaluate multiple unrelated conditions. N PowerApps (ao contrário do Microsoft Excel), pode especificar várias condições sem que seja necessário aninhar fórmulas Se.In PowerApps (unlike Microsoft Excel), you can specify multiple conditions without having to nest If formulas.
  • Utilize Parâmetro para avaliar uma condição individual face a várias correspondências possíveis.Use Switch to evaluate a single condition against multiple possible matches. Também pode utilizar Se neste caso, mas teria de repetir a fórmula para cada possível correspondência.You can also use If in this case, but you'd need to repeat the formula for each possible match.

Pode utilizar ambas as funções em fórmulas comportamentais para ramificar entre duas ou mais ações.You can use both of these functions in behavior formulas to branch between two or more actions. Uma ramificação vai acionar uma ação.Only one branch will trigger an action. 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.Conditions and matches are evaluated in order, and they stop if a condition is true or a match is found.

É devolvido Blank (Em branco) se nenhuma condição for verdadeira, se não forem encontradas correspondências e se não especificar um resultado predefinido.Blank is returned if no conditions are true, no matches are found, and you don't specify a default result.

SintaxeSyntax

Se( Condição, ResultadoEntão [, ResultadoPredefinido ] )If( Condition, ThenResult [, DefaultResult ] )
Se( Condição1, ResultadoEntão1 [, Condição2, ResultadoEntão2, ... [ , ResultadoPredefinido ] ] )If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condição(ões) - obrigatório.Condition(s) - Required. Fórmula(s) a testar como verdadeira(s).Formula(s) to test for true. Normalmente, estas fórmulas contêm operadores de comparação (como <, > e =) e testam funções como É.CÉL.VAZIA e ÉVAZIO.Such formulas commonly contain comparison operators (such as <, >, and =) and test functions such as IsBlank and IsEmpty.
  • Resultado(s)Então - obrigatório.ThenResult(s) - Required. O valor correspondente a devolver para uma condição que é avaliada como verdadeira.The corresponding value to return for a condition that evaluates to true.
  • ResultadoPredefinido - opcional.DefaultResult - Optional. O valor a devolver se nenhuma condição for avaliada como verdadeira.The value to return if no condition evaluates to true. Se não especificar este argumento, é devolvido blank.If you don't specify this argument, blank is returned.

Parâmetro( Fórmula, Correspondência1, Resultad1 [, Correspondência2, Resultado2, ... [, ResultadoPredefinido ] ] )Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • Fórmula - Necessário.Formula - Required. Fórmula a avaliar para correspondências.Formula to evaluate for matches. Esta fórmula é avaliada apenas uma vez.This formula is evaluated only once.
  • Correspondência(s) - obrigatório.Match(s) - Required. Valores a comparar com o resultado de Fórmula.Values to compare with the result from Formula. Se for encontrada uma correspondência exata, é devolvido o Resultado correspondente.If an exact match is found, the corresponding Result is returned.
  • Resultado(s) – obrigatório.Result(s) - Required. O valor correspondente a devolver quando é encontrada uma correspondência exata.The corresponding value to return when an exact match is found.
  • ResultadoPredefinido - opcional.DefaultResult - Optional. Se não for encontrada uma correspondência exata, é devolvido este valor.If an exact match isn't found, this value is returned. Se não especificar este argumento, é devolvido blank.If you don't specify this argument, blank is returned.

ExemplosExamples

Valores nas fórmulasValues in formulas

Nos exemplos seguintes, um Controlo de Deslize (com o nome Slider1) tem o valor de 25.In the following examples, a Slider control (named Slider1) has a value of 25.

FórmulaFormula DescriçãoDescription ResultadoResult
Se( Valor.Slider1 = 25, "Resultado1" )If( Slider1.Value = 25, "Result1" ) A condição é verdadeira e é devolvido o resultado correspondente.The condition is true, and the corresponding result is returned. "Resultado1""Result1"
Se( Valor.Slider1 = 25, "Resultado1", "Resultado2" )If( Slider1.Value = 25, "Result1", "Result2" ) A condição é verdadeira e é devolvido o resultado correspondente.The condition is true, and the corresponding result is returned. "Resultado1""Result1"
If( Valor.Slider1. > 1000, "Resultado1" )If( Slider1.Value > 1000, "Result1" ) A condição é falsa e não foi fornecido o ResultadoPredefinido.The condition is false, and no DefaultResult was provided. em brancoblank
If( Valor.Slider1. > 1000, "Resultado1", "Resultado2" )If( Slider1.Value > 1000, "Result1", "Result2" ) A condição é falsa, foi fornecido um ResultadoPredefinido e é devolvido.The condition is false, a DefaultResult was provided, and it's returned. "Resultado2""Result2"
If( Valor.Slider1 = 25, "Resultado1", ValorSlider1. > 0, "Resultado2" )If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) A primeira condição é verdadeira e é devolvido o resultado correspondente.The first condition is true, and the corresponding result is returned. A segunda condição também é verdadeira, mas não é avaliada porque aparece mais adiante na lista de argumentos do que uma condição que é avaliada como verdedeira.The second condition is also true, but it isn't evaluated because it appears later in the argument list than a condition that evaluates to true. "Resultado1""Result1"
If( É.CÉL.VAZIA( Valor.Slider1 ), "Resultad1", ÉNum( Valor.Slider1 ), "Resultado2" )If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) A primeira condição é falsa porque o controlo de deslize não está em branco.The first condition is false because the slider isn't blank. A segunda condição é verdadeira porque o valor do controlo de deslize é um número e o resultado correspondente é devolvido.The second condition is true because the slider's value is a number, and the corresponding result is returned. "Resultado2""Result2"
If( Valor.Slider1 > 1000, "Resultado1", Valor.Slider1 > 50, "Resultado2", "Resultado3")If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") A primeira e a segunda condições são falsas, foi fornecido um ResultadoPredefinido e é devolvido.Both the first and second conditions are false, a DefaultResult was provided, and it's returned. "Resultado3""Result3"
Parâmetro( ValorSlider1, 25, "Resultado1" )Switch( Slider1.Value, 25, "Result1" ) O valor do controlo de deslize corresponde ao primeiro valor a ser verificado e o resultado correspondente é devolvido.The slider's value matches the first value to be checked, and the corresponding result is returned. "Resultado1""Result1"
Parâmetro( ValorSlider1, 20, "Resultado1", 25, "Resultado2", 30, "Resultado3" )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.The slider's value matches the second value to be checked, and the corresponding result is returned. "Resultado2""Result2"
Parâmetro( Valor.Slider1, 20, "Resultado1", 10, "Resultado2", 0, "Resultado3", "ResultadoPredefinido" )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.The slider's value doesn't match any value to be checked. Foi fornecido um ResultadoPredefinido, pelo que é devolvido.A DefaultResult was provided, so it's returned. “ResultadoPredefinido”"DefaultResult"

Ramificar fórmulas comportamentaisBranching in behavior formulas

Nestes exemplos, um controlo de Entrada de texto com o nome NomePróprio tem escrito o valor "João".In these examples, a Text input control named FirstName has the value "John" typed into it.

FórmulaFormula DescriçãoDescription ResultadoResult
Se( ! É.CÉL.VAZIA( Texto.NomePróprio ), Navegar( Ecrã1, TransiçãodeEcrã.Nenhuma ) )If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) A condição é verdadeira, pelo que a função Navegar é executada.The condition is true, so the Navigate function runs. Pode utilizar a função É.CÉL.VAZIA para testar se um campo de formulário necessário foi preenchido.You can use the IsBlank function to test whether a required form field has been filled in. Se NomePróprio estivesse em branco, esta fórmula não teria qualquer efeito.If FirstName were blank, this formula would have no effect. truetrue

O ecrã é alterado para Ecrã1.The display is changed to Screen1.
Se( É.CÉL.VAZIA( Texto.NomePróprio ), Navegar( Ecrã1, TransiçãodeEcrã.Nenhuma ), Retorno() )If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Sem o operador !,Without the ! a condição é falsa, pelo que a função Navegar não é executada.operator, the condition is false, so the Navigate function doesn't run. A função Retorno foi fornecida como ResultadoPredefinido, pelo que é executada.The Back function was provided as a DefaultResult, so it runs. truetrue

O ecrã volta para o ecrã que estava a ser mostrado antes.The display goes back to the screen that was previously shown.
Parâmetro( Texto.NomePróprio, "Carlos", Navegar( Ecrã1, TransiçãodeEcrã.Nenhuma ), "Cristina", Navegar( Ecrã2, TransiçãodeEcrã.Nenhuma ), "João", Navegar( Ecrã3, TransiçãodeEcrã.Nenhuma ) )Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) O valor de Texto.NomePróprio é comparado a "Carlos", "Cristina" e "João", por esta ordem.The value of FirstName.Text is compared against "Carlos", "Kirstin", and "John" in that order. É encontrada uma correspondência com "João", pelo que a aplicação navega para Ecrã3.A match is found with "John", so the app navigates to Screen3. truetrue

O ecrã é alterado para Ecrã3.The display is changed to Screen3.

Passo a passoStep by step

  1. Adicione um controlo de Entrada de texto e dê-lhe o nome Texto1, caso não tenha este nome por predefinição.Add a Text input control, and name it Text1 if it doesn't have that name by default.
  2. Em Texto1, escreva 30.In Text1, type 30.
  3. Adicione um controlo Etiqueta e defina a sua propriedade Texto para esta fórmula:Add a Label control, and set its Text property to this formula:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    O controlo Etiqueta mostra Ordenar mais!The Label control shows Order more! porque o valor de Texto1 é superior a 20, mas inferior a 40.because the value of Text1 is more than 20 but less than 40.

  4. Em Texto1, escreva 15.In Text1, type 15.

    O controlo Etiqueta mostra Ordenar MUITO mais!The Label control shows Order MANY more! porque o valor de Texto1 é inferior a 20.because the value of Text1 is less than 20.

  5. Em Texto1, escreva 50.In Text1, type 50.

    O controlo Etiqueta mostra o valor que escreveu porque é superior a 40.The Label control shows the value that you typed because it's more than 40.