Funciones Si y Cambiar de PowerAppsIf and Switch functions in PowerApps

Determina si se cumple alguna condición de un conjunto (Si) o si el resultado de una fórmula coincide con algún valor de un conjunto (Cambiar) y luego devuelve un resultado o ejecuta una acción.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.

DescripciónDescription

La función Si comprueba una o varias condiciones hasta que encuentra un resultado verdadero.The If function tests one or more conditions until a true result is found. Si se encuentra un resultado de este tipo, se devuelve un valor correspondiente.If such a result is found, a corresponding value is returned. Si no se encuentra ningún resultado de este tipo, se devuelve un valor predeterminado.If no such result is found, a default value is returned. En cualquier caso, el valor devuelto podría ser una cadena para mostrar, una fórmula para evaluar u otra forma de resultado.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

La función Cambiar evalúa una fórmula y determina si el resultado coincide con algún valor de una secuencia que especifique.The Switch function evaluates a formula and determines whether the result matches any value in a sequence that you specify. Si se encuentra una coincidencia, se devuelve un valor correspondiente.If a match is found, a corresponding value is returned. Si no se encuentra ninguna coincidencia, se devuelve un valor predeterminado.If no match is found, a default value is returned. En cualquier caso, el valor devuelto podría ser una cadena para mostrar, una fórmula para evaluar u otra forma de resultado.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

Las funciones Si y Cambiar son muy parecidas, así que debe usar aquella que mejor se adapte a su situación:If and Switch are very similar, but you should use the best function for your situation:

  • Use Si para evaluar una única condición.Use If to evaluate a single condition. La sintaxis más común para esta función es If( Condition, ThenResult, DefaultResult ), que proporciona el patrón común "if …The most common syntax for this function is If( Condition, ThenResult, DefaultResult ), which provides the common “if … then ...then … else ..."else …” que puede verse en otras herramientas de programación.pattern seen in other programming tools.
  • Use Si para evaluar varias condiciones no relacionadas.Use If to evaluate multiple unrelated conditions. En PowerApps (a diferencia de Microsoft Excel), puede especificar varias condiciones sin tener que anidar fórmulas Si.In PowerApps (unlike Microsoft Excel), you can specify multiple conditions without having to nest If formulas.
  • Use Cambiar para evaluar una condición única contra varias coincidencias posibles.Use Switch to evaluate a single condition against multiple possible matches. También podría usar Si en este caso, pero tendría que repetir la fórmula con cada posible coincidencia.You can also use If in this case, but you'd need to repeat the formula for each possible match.

Puede usar ambas funciones en fórmulas de comportamiento para crear una bifurcación entre dos o más acciones.You can use both of these functions in behavior formulas to branch between two or more actions. Solo una bifurcación desencadenará una acción.Only one branch will trigger an action. Las condiciones y coincidencias se evalúan en orden y se detienen si una condición es verdadera o se encuentra una coincidencia.Conditions and matches are evaluated in order, and they stop if a condition is true or a match is found.

Se devuelve en blanco si ninguna condición es verdadera, no se encuentra ninguna coincidencia y no especifica un resultado predeterminado.Blank is returned if no conditions are true, no matches are found, and you don't specify a default result.

SintaxisSyntax

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

  • Condition(s): requerido.Condition(s) - Required. Fórmulas para comprobar que una condición es verdadera.Formula(s) to test for true. Tales fórmulas contienen normalmente operadores de comparación (como <, > y =) y permiten probar funciones como EsBlanco e IsEmpty.Such formulas commonly contain comparison operators (such as <, >, and =) and test functions such as IsBlank and IsEmpty.
  • ThenResult(s) (ResultadoEntonces): requerido.ThenResult(s) - Required. El valor correspondiente que se devuelve para una condición que se evalúa como true.The corresponding value to return for a condition that evaluates to true.
  • DefaultResult (ResultadoPred): opcional.DefaultResult - Optional. El valor que se devuelve si ninguna condición se evalúa como verdadera.The value to return if no condition evaluates to true. Si no se especifica este argumento, se devolverá un valor en blanco.If you don't specify this argument, blank is returned.

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

  • Formula: requerido.Formula - Required. Fórmula para evaluar coincidencias.Formula to evaluate for matches. Esta fórmula se evalúa solo una vez.This formula is evaluated only once.
  • Match(s) (Coincidencias): requerido.Match(s) - Required. Valores para comparar con el resultado de Fórmula.Values to compare with the result from Formula. Si se encuentra una coincidencia exacta, se devuelve el Resultado correspondiente.If an exact match is found, the corresponding Result is returned.
  • Result(s): requerido.Result(s) - Required. El valor correspondiente que se devolverá cuando se encuentre una coincidencia exacta.The corresponding value to return when an exact match is found.
  • DefaultResult (ResultadoPred): opcional.DefaultResult - Optional. Si no se encuentra una coincidencia exacta, se devuelve este valor.If an exact match isn't found, this value is returned. Si no se especifica este argumento, se devolverá un valor en blanco.If you don't specify this argument, blank is returned.

EjemplosExamples

Valores en las fórmulasValues in formulas

En los ejemplos siguientes, un control Control deslizante (llamado Slider1) tiene un valor de 25.In the following examples, a Slider control (named Slider1) has a value of 25.

FórmulaFormula DescripciónDescription ResultadoResult
Si( Slider1.Value = 25, "Result1" )If( Slider1.Value = 25, "Result1" ) La condición es true y se devuelve el resultado correspondiente.The condition is true, and the corresponding result is returned. "Result1""Result1"
Si( Slider1.Value = 25, "Result1", "Result2" )If( Slider1.Value = 25, "Result1", "Result2" ) La condición es true y se devuelve el resultado correspondiente.The condition is true, and the corresponding result is returned. "Result1""Result1"
Si( Slider1.Value > 1000, "Result1" )If( Slider1.Value > 1000, "Result1" ) La condición es falsa y no se proporcionó ningún valor para DefaultResult (ResultadoPred).The condition is false, and no DefaultResult was provided. en blancoblank
Si( Slider1.Value > 1000, "Result1", "Result2" )If( Slider1.Value > 1000, "Result1", "Result2" ) La condición es falsa, se proporcionó un valor para DefaultResult (ResultadoPred), que es el que se devuelve.The condition is false, a DefaultResult was provided, and it's returned. "Result2""Result2"
Si( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" )If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) La primera condición es true y se devuelve el resultado correspondiente.The first condition is true, and the corresponding result is returned. La segunda condición es también verdadera, pero no se evalúa ya que aparece más adelante en la lista de argumentos que una condición que se evalúa como verdadera.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. "Result1""Result1"
Si( EsBlanco( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" )If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) La primera condición es falsa porque el control deslizante no está en blanco.The first condition is false because the slider isn't blank. La segunda condición es true porque el valor del control deslizante es un número y se devolverá el resultado correspondiente.The second condition is true because the slider's value is a number, and the corresponding result is returned. "Result2""Result2"
Si( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3")If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") Las condiciones primera y segunda son falsas, se proporcionó un valor para DefaultResult (ResultadoPred), y es el que se devuelve.Both the first and second conditions are false, a DefaultResult was provided, and it's returned. "Result3""Result3"
Switch( Slider1.Value, 25, "Result1" )Switch( Slider1.Value, 25, "Result1" ) El valor del control deslizante coincide con el primer valor que se comprueba, y se devuelve el resultado correspondiente.The slider's value matches the first value to be checked, and the corresponding result is returned. "Result1""Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" )Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) El valor del control deslizante coincide con el segundo valor que se comprueba, y se devuelve el resultado correspondiente.The slider's value matches the second value to be checked, and the corresponding result is returned. "Result2""Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" )Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) El valor del control deslizante no coincide con ningún valor que se comprueba.The slider's value doesn't match any value to be checked. Se proporcionó un valor para DefaultResult (ResultadoPred), que es el que se devuelve.A DefaultResult was provided, so it's returned. "DefaultResult" (ResultadoPred)"DefaultResult"

Bifurcación en fórmulas de comportamientoBranching in behavior formulas

En los ejemplos siguientes, un control Entrada de texto denominado FirstName tiene escrito el valor "John".In these examples, a Text input control named FirstName has the value "John" typed into it.

FórmulaFormula DescripciónDescription ResultadoResult
If( ! EsBlanco( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) )If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) La condición es verdadera, así que se ejecuta la función Navigate (Navegar).The condition is true, so the Navigate function runs. Puede usar la función EsBlanco para comprobar si se ha rellenado un campo de formulario obligatorio.You can use the IsBlank function to test whether a required form field has been filled in. Si FirstName (Nombre) estuviera en blanco, esta fórmula no tendría ningún efecto.If FirstName were blank, this formula would have no effect. truetrue

La pantalla cambia a Screen1.The display is changed to Screen1.
Si( EsBlanco( FirstName.Text ), Navegar( Screen1, ScreenTransition.None ), Atrás() )If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Sin el operador !, Without the ! la condición es falsa, así que no se ejecuta la función Navigate (Navegar).operator, the condition is false, so the Navigate function doesn't run. La función Back (Atrás) se proporcionó como DefaultResult (ResultadoPred), así que es la que se ejecuta.The Back function was provided as a DefaultResult, so it runs. truetrue

Se vuelve a la pantalla que aparecía anteriormente.The display goes back to the screen that was previously shown.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) )Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) El valor de FirstName.Text se compara con "Carlos", "Kirstin" y "John" en ese orden.The value of FirstName.Text is compared against "Carlos", "Kirstin", and "John" in that order. Se encuentra una coincidencia con "John", por lo que la aplicación se desplaza a Screen3.A match is found with "John", so the app navigates to Screen3. truetrue

La pantalla cambia a Screen3.The display is changed to Screen3.

Paso a pasoStep by step

  1. Agregue un control Entrada de texto y asígnele el nombre Text1, siempre que no sea su nombre predeterminado.Add a Text input control, and name it Text1 if it doesn't have that name by default.
  2. En Text1, escriba 30.In Text1, type 30.
  3. Agregue un control Etiqueta y establezca su propiedad Texto en esta fórmula:Add a Label control, and set its Text property to this formula:
    Si( Value(Text1.Text) < 20, "Pida MUCHO más", Value(Text1.Text) < 40, "Pida más", Text1.Text )If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    El control Etiqueta muestra Order more!The Label control shows Order more! dado que el valor de Text1 es superior a 20, pero inferior a 40.because the value of Text1 is more than 20 but less than 40.

  4. En Text1, escriba 15.In Text1, type 15.

    El control Etiqueta muestra Order MANY more!The Label control shows Order MANY more! dado que el valor de Text1 es inferior a 20.because the value of Text1 is less than 20.

  5. En Text1, escriba 50.In Text1, type 50.

    El control Etiqueta muestra el valor que escribió porque es superior a 40.The Label control shows the value that you typed because it's more than 40.