Funcions If i Switch
S'aplica a: Columnes de fórmules Dataverse d'aplicacions de llenç Fluxos d'escriptori CLI d'aplicacions Power Pages Power Platform basades en models
Determina si qualsevol condició d'un conjunt és certa (If) o el resultat d'una fórmula coincideix amb qualsevol valor d'un conjunt (Switch) i, a continuació, torna un resultat o executa una acció.
Descripció
La funció If prova una o diverses condicions fins que es trobi un resultat true. Si es troba aquest resultat, es retornarà el valor corresponent. Si no es troba aquest resultat, es retornarà un valor per defecte. En qualsevol cas, el valor retornat podria ser una cadena que es mostrarà, una fórmula que s'avaluarà o una altra forma de resultats.
La funció Switch avalua una fórmula i determina si el resultat coincideix amb qualsevol valor d'una seqüència que especifiqueu. Si es troba una coincidència, es retornarà el valor corresponent. Si no es troba cap coincidència, es retornarà el valor per defecte. En qualsevol cas, el valor retornat podria ser una cadena que es mostrarà, una fórmula que s'avaluarà o una altra forma de resultats.
Si i Switch són molt similars, però hauríeu d'utilitzar la millor funció per a la vostra situació:
- Utilitzeu If si voleu avaluar una única condició. La sintaxi més comuna per a aquesta funció és If(Condition,ThenResult,DefaultResult ), que proporciona el comú "si ... aleshores … altrament..." patró vist en altres eines de programació.
- Utilitzeu If per avaluar diverses condicions no relacionades. Al Power Apps (a diferència del Microsoft Excel), podeu especificar diverses condicions sense haver d'imbricar les fórmules If.
- Utilitzeu Switch per avaluar una única condició amb diverses possibles coincidències. També podeu utilitzar If en aquest cas, però hauríeu de repetir la fórmula per a cada possible coincidència.
Podeu utilitzar totes dues funcions en fórmules de comportament per ramificar entre dues o més accions. Només una branca activarà una acció. Les condicions i les coincidències s'avaluen per ordre i s'aturen si una condició és true o si es troba una coincidència.
Es retorna Blank si no es compleix cap condició, no s'ha trobat cap coincidència i no s'especifica un resultat per defecte.
Sintaxi
If(Condició,Resultat [, ResultatPer defecte] )
If(Condition1,ThenResult1 [, Condition2,ThenResult2 , ... [, Resultat per defecte] ] )
- Condicions : obligatòries. Fórmules per provar si són true. Aquestes fórmules normalment contenen operadors de comparació, (com ara <, > i =) i tenen funcions de prova, com ara IsBlank i IsEmpty.
- ThenResults - Obligatori. Valor corresponent que es tornarà per a una condició que s'avalua com a true.
- DefaultResult : opcional. Valor que es tornarà si no s'avalua cap condició com a true. Si no especifiqueu aquest argument, es torna un valor en blanc.
Switch(Formula,Match1,Result1 [, Match2,Resultat2 , ... [, Resultat per defecte] ] )
- Fórmula : obligatòria. Fórmula per avaluar si hi ha coincidències. Aquesta fórmula només s'avalua una vegada.
- Coincidències : obligatòries. Valors que es comparen amb el resultat de la Fórmula. Si es troba una coincidència exacta, es retornarà el Resultat corresponent.
- Resultats - Obligatori. El valor corresponents es retornarà si es troba una coincidència exacta.
- DefaultResult : opcional. Si no es troba cap coincidència exacta, es retorna aquest valor. Si no especifiqueu aquest argument, es torna un valor en blanc.
Exemples
Valors en fórmules
Als exemples següents, un Control lliscant (anomenat Slider1) té un valor de 25.
Fórmula | Descripció | Resultat |
---|---|---|
If( Slider1.Value = 25, "Resultat1" ) | La condició és true i el resultat corresponent es torna. | "Result1" |
If( Slider1.Value = 25, "Resultat1", "Resultat2" ) | La condició és true i el resultat corresponent es torna. | "Result1" |
If( Slider1.Value > 1000, "Result1" ) | La condició és false i no s'ha proporcionat DefaultResult. | Buit |
If( Slider1.Value > 1000, "Resultat1", "Resultat2" ) | La condició és false, s'ha proporcionat DefaultResult i s'ha retornat. | "Result2" |
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Resultat2" ) | La primera condició és true i el resultat corresponent es torna. La segona condició també és true, però no s'avalua perquè apareix més endavant a la llista d'arguments que una condició que s'avalua com a true. | "Result1" |
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Resultat2" ) | La primera condició és false perquè el control lliscant no està en blanc. La segona condició és true perquè el valor del control lliscant és un número i es torna el resultat corresponent. | "Result2" |
If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Resultat2", "Resultat3") | La primera i la segona condició són false, s'ha proporcionat DefaultResult i s'ha retornat. | "Result3" |
Switch( Slider1.Value, 25, "Result1" ) | El valor del control lliscant coincideix amb el primer valor que s'ha de comprovar i es retornarà el resultat corresponent. | "Result1" |
Switch( Slider1.Value, 20, "Result1", 25, "Resultat2", 30, "Resultat3" ) | El valor del control lliscant coincideix amb el segon valor que s'ha de comprovar i es retornarà el resultat corresponent. | "Result2" |
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) | El valor del control lliscant no coincideix amb cap valor que s'hagi de comprovar. S'ha proporcionat DefaultResult, per la qual cosa es torna. | "DefaultResult" |
Ramificació en fórmules de comportament
En aquests exemples, un control Entrada de text anomenat FirstName té el valor "John" teclejat.
Fórmula | Descripció | Resultat |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | La condició és true, de manera que s'executa la funció Navigate. Podeu utilitzar la funció IsBlank per provar si un camp del formulari obligatori s'ha emplenat. Si FirstName és blank, la fórmula no té cap efecte. | veritable La pantalla es canvia a Screen1. |
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) | Sense l'operador !, la condició és false, de manera que la funció Navigate no s'executa. La funció Back s'ha subministrat com a DefaultResult i, per tant, s'executa. | veritable Es torna a la pantalla que s'ha mostrat abans. |
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) | El valor de FirstName.Text es compara amb "Carlos", "Kirstin" i "John" en aquest ordre. Una coincidència es troba amb "John", de manera que l'aplicació navega a Screen3. | veritable La pantalla es canvia a Screen3. |
Pas a pas
Afegiu un control Entrada de text i anomeneu-lo Text1 si no té aquest nom per defecte.
A Text1, escriviu 30.
Afegiu un control Label i definiu-ne la propietat Text en aquesta fórmula:
If( Value(Text1.Text) < 20, "Demana MOLTS més!", Value(Text1.Text) < 40, "Demana més!", Text1.Text )El control Label mostra Més comandes! perquè el valor de Text1 és superior a 20 però inferior a 40.
A Text1, escriviu 15.
El control Label mostra MOLTES més comandes! perquè el valor de Text1 és inferior a 20.
A Text1, escriviu 50.
El control Etiqueta mostra el valor que heu escrit perquè és superior a 40.