Funzioni If e Switch in PowerAppsIf and Switch functions in PowerApps

Determina se qualsiasi condizione in un set è true (If) o il risultato di una formula corrisponde a un qualsiasi valore in un set (Switch) e restituisce un risultato o esegue un'azione.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.

DescrizioneDescription

La funzione If verifica una o più condizioni finché non viene trovato un risultato true.The If function tests one or more conditions until a true result is found. Se viene trovato un risultato di questo tipo, viene restituito un valore corrispondente.If such a result is found, a corresponding value is returned. In caso contrario viene restituito un valore predefinito.If no such result is found, a default value is returned. In entrambi i casi, il valore restituito potrebbe essere una stringa da visualizzare, una formula da valutare o un altro tipo di risultato.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

La funzione Switch valuta una formula e determina se il risultato corrisponde a un qualsiasi valore in una sequenza specificata.The Switch function evaluates a formula and determines whether the result matches any value in a sequence that you specify. Se viene trovato un risultato, viene restituito un valore corrispondente.If a match is found, a corresponding value is returned. In caso contrario, viene restituito un valore predefinito.If no match is found, a default value is returned. In entrambi i casi, il valore restituito potrebbe essere una stringa da visualizzare, una formula da valutare o un altro tipo di risultato.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

Le funzioni If e Switch sono molto simili, ma è opportuno usare la funzione più adatta alla situazione specifica:If and Switch are very similar, but you should use the best function for your situation:

  • Usare If per valutare una sola condizione.Use If to evaluate a single condition. La sintassi più comune per questa funzione è If(Condition, ThenResult, DefaultResult), che fornisce il modello comune "if...The most common syntax for this function is If( Condition, ThenResult, DefaultResult ), which provides the common “if … then...then … else..."else …” usato in altri strumenti di programmazione.pattern seen in other programming tools.
  • Usare If per valutare più condizioni non correlate.Use If to evaluate multiple unrelated conditions. A differenza di Microsoft Excel, in PowerApps è possibile specificare più condizioni senza la necessità di annidare formule If.In PowerApps (unlike Microsoft Excel), you can specify multiple conditions without having to nest If formulas.
  • Usare Switch per valutare una singola condizione rispetto a più corrispondenze possibili.Use Switch to evaluate a single condition against multiple possible matches. È possibile anche usare If in questo caso, ma è necessario ripetere la formula per ogni possibile corrispondenza.You can also use If in this case, but you'd need to repeat the formula for each possible match.

È possibile usare entrambe le funzioni nelle formule di comportamento per creare un ramo tra due o più azioni.You can use both of these functions in behavior formulas to branch between two or more actions. Solo un ramo attiverà un'azione.Only one branch will trigger an action. Le condizioni e le corrispondenze vengono valutate nell'ordine e si interrompono se una condizione è true o se viene trovata una corrispondenza.Conditions and matches are evaluated in order, and they stop if a condition is true or a match is found.

Vuoto viene restituito se nessuna condizione è true, non vengono trovate corrispondenze e non si specifica un risultato predefinito.Blank is returned if no conditions are true, no matches are found, and you don't specify a default result.

SintassiSyntax

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

  • Condizioni: obbligatorio.Condition(s) - Required. Formula o formule da verificare per ricercare il valore true.Formula(s) to test for true. Queste formule solitamente contengono operatori di confronto, ad esempio <, > e =, e verificano funzioni quali IsBlank e IsEmpty.Such formulas commonly contain comparison operators (such as <, >, and =) and test functions such as IsBlank and IsEmpty.
  • ThenResult(s): obbligatorio.ThenResult(s) - Required. Il valore corrispondente da restituire per una condizione che restituisce true.The corresponding value to return for a condition that evaluates to true.
  • DefaultResult: facoltativo.DefaultResult - Optional. Il valore da restituire se nessuna condizione viene valutata come true.The value to return if no condition evaluates to true. Se non si specifica questo argomento, viene restituito blank .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 - Obbligatorio.Formula - Required. Formula da valutare per ogni corrispondenza.Formula to evaluate for matches. Questa formula viene valutata una sola volta.This formula is evaluated only once.
  • Match(s): obbligatorio.Match(s) - Required. Valori da confrontare con il risultato di Formula.Values to compare with the result from Formula. Se viene trovata una corrispondenza esatta, viene restituito il valore Result corrispondente.If an exact match is found, the corresponding Result is returned.
  • Risultati: obbligatorio.Result(s) - Required. Il valore corrispondente da restituire quando viene trovata una corrispondenza esatta.The corresponding value to return when an exact match is found.
  • DefaultResult: facoltativo.DefaultResult - Optional. Se non viene trovata una corrispondenza esatta, viene restituito questo valore.If an exact match isn't found, this value is returned. Se non si specifica questo argomento, viene restituito blank .If you don't specify this argument, blank is returned.

EsempiExamples

Valori nelle formuleValues in formulas

Negli esempi seguenti un controllo Dispositivo di scorrimento denominato Slider1 ha il valore 25.In the following examples, a Slider control (named Slider1) has a value of 25.

FormulaFormula DescrizioneDescription RisultatoResult
If( Slider1.Value = 25, "Risultato1" )If( Slider1.Value = 25, "Result1" ) La condizione è true, quindi viene restituito il risultato corrispondente.The condition is true, and the corresponding result is returned. "Risultato1""Result1"
If( Slider1.Value = 25, "Risultato1", "Risultato2" )If( Slider1.Value = 25, "Result1", "Result2" ) La condizione è true, quindi viene restituito il risultato corrispondente.The condition is true, and the corresponding result is returned. "Risultato1""Result1"
If( Slider1.Value > 1000, "Risultato1" )If( Slider1.Value > 1000, "Result1" ) La condizione è false e non è stato specificato un DefaultResult.The condition is false, and no DefaultResult was provided. blankblank
If( Slider1.Value > 1000, "Risultato1", "Risultato2" )If( Slider1.Value > 1000, "Result1", "Result2" ) La condizione è false, è stato specificato e restituito un DefaultResult.The condition is false, a DefaultResult was provided, and it's returned. "Risultato2""Result2"
If( Slider1.Value = 25, "Risultato1", Slider1.Value > 0, "Risultato2" )If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) La prima condizione è true, quindi viene restituito il risultato corrispondente.The first condition is true, and the corresponding result is returned. Anche la seconda condizione è true, ma non viene valutata perché viene visualizzata in un secondo momento nell'elenco di argomenti rispetto a una condizione che restituisce true.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. "Risultato1""Result1"
If( IsBlank( Slider1.Value ), "Risultato1", IsNumeric( Slider1.Value ), "Risultato2" )If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) La prima condizione è false perché il dispositivo di scorrimento non è blank.The first condition is false because the slider isn't blank. La seconda condizione è true perché il valore del dispositivo di scorrimento è un numero e quindi viene restituito il risultato corrispondente.The second condition is true because the slider's value is a number, and the corresponding result is returned. "Risultato2""Result2"
If( Slider1.Value > 1000, "Risultato1", Slider1.Value > 50, "Risultato2", "Risultato3")If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") Sia la prima sia la seconda condizione sono false, è stato specificato e restituito DefaultResult.Both the first and second conditions are false, a DefaultResult was provided, and it's returned. "Risultato3""Result3"
Switch (Slider1.Value, 25, "Risultato1")Switch( Slider1.Value, 25, "Result1" ) Il valore del dispositivo di scorrimento corrisponde al primo valore da controllare e viene restituito il risultato corrispondente.The slider's value matches the first value to be checked, and the corresponding result is returned. "Risultato1""Result1"
Switch( Slider1.Value, 20, "Risultato1", 25, "Risultato2", 30, "Risultato3" )Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) Il valore del dispositivo di scorrimento corrisponde al secondo valore da controllare e viene restituito il risultato corrispondente.The slider's value matches the second value to be checked, and the corresponding result is returned. "Risultato2""Result2"
Switch (Slider1.Value, 20, "Risultato1", 10, "Risultato2", 0, "Risultato3", "DefaultResult")Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) Il valore del dispositivo di scorrimento non corrisponde a nessun valore da controllare.The slider's value doesn't match any value to be checked. Un DefaultResult è stato specificato e quindi viene restituito.A DefaultResult was provided, so it's returned. "DefaultResult""DefaultResult"

Creazione di rami nelle formule di comportamentoBranching in behavior formulas

In questi esempi un controllo Input di testo denominato FirstName contiene il valore "John".In these examples, a Text input control named FirstName has the value "John" typed into it.

FormulaFormula DescrizioneDescription RisultatoResult
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) )If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) La condizione è true, quindi viene eseguita la funzione Navigate.The condition is true, so the Navigate function runs. È possibile usare la funzione IsBlank per verificare se è stato specificato un campo modulo obbligatorio.You can use the IsBlank function to test whether a required form field has been filled in. Se il valore FirstName fosse vuoto, questa formula non avrebbe alcun effetto.If FirstName were blank, this formula would have no effect. truetrue

La visualizzazione viene modificata a Screen1.The display is changed to Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() )If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Senza l'operatore !Without the ! la condizione è false, quindi la funzione Navigate non viene eseguita.operator, the condition is false, so the Navigate function doesn't run. La funzione Back è stata specificata come DefaultResult, quindi viene eseguita.The Back function was provided as a DefaultResult, so it runs. truetrue

La visualizzazione torna alla schermata visualizzata in precedenza.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 ) ) Il valore di FirstName.Text viene confrontato con "Carlos", "Kirstin" e "John" in questo ordine.The value of FirstName.Text is compared against "Carlos", "Kirstin", and "John" in that order. Viene trovata una corrispondenza con "John", quindi l'app passa a Schermata3.A match is found with "John", so the app navigates to Screen3. truetrue

La visualizzazione viene modificata a Screen3.The display is changed to Screen3.

Procedura dettagliataStep by step

  1. Aggiungere un controllo Input di testo e denominarlo Text1 se non ha tale nome per impostazione predefinita.Add a Text input control, and name it Text1 if it doesn't have that name by default.
  2. In Text1 digitare 30.In Text1, type 30.
  3. Aggiungere un controllo Etichetta e impostarne la proprietà Text sulla formula seguente:Add a Label control, and set its Text property to this formula:
    If( Value(Text1.Text) < 20, "Ordina MOLTO di più!", Value(Text1.Text) < 40, "Ordina di più!", Text1.Text ) If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    Il controllo Etichetta mostra Ordina di più!The Label control shows Order more! poiché il valore di Text1 è inferiore a 40, ma superiore a 20.because the value of Text1 is more than 20 but less than 40.

  4. In Text1, digitare 15.In Text1, type 15.

    Il controllo Etichetta mostra Ordina MOLTO di più!The Label control shows Order MANY more! Poiché il valore di Text1 è inferiore a 20.because the value of Text1 is less than 20.

  5. In Text1 digitare 50.In Text1, type 50.

    Il controllo Etichetta mostra il valore digitato perché è superiore a 40.The Label control shows the value that you typed because it's more than 40.