If 與 Switch 函式
適用於: 畫布應用 Dataverse 公式列 桌面流 模型驅動應用 Power Pages Power Platform CLI
決定集合中的任何條件是否為 true (If),或者公式的結果是否符合集合中的任何值 (Switch),然後傳回結果或執行動作。
描述
If 函式會測試一或多個條件,直到找到 true 結果為止。 如果找到這類結果,則會傳回對應值。 如果找不到這類結果,則會傳回預設值。 在任一情況下,傳回的值可能是要顯示的字串、要評估的公式,或另一種形式的結果。
Switch 函式會評估公式,並判斷結果是否符合您指定的序列中的任何值。 如果找到相符項目,則會傳回對應值。 如果找不到相符項目,則會傳回預設值。 在任一情況下,傳回的值可能是要顯示的字串、要評估的公式,或另一種形式的結果。
If 和 Switch 非常相似,但您應該使用最適合您情況的函數:
- 使用 If 來評估單一條件。 此函數最常見的語法是 If( Condition, ThenResult, DefaultResult ),該語法提供常見的 "if … then … else …" 模式,常在其他程式設計工具中看到。
- 使用 If 來評估多個不相關的條件。 在 Power Apps (不像 Microsoft Excel) 中,您可以指定多個條件而不用讓 If 公式成為巢狀。
- 使用 Switch 針對多個可能的相符項目評估單一條件。 您也可以在此案例中使用 If,但是您不需要對每個可能的相符項目重複公式。
您可以在 行為公式 中同時使用這兩個函式,以在兩個以上的動作之間分支。 只有一個分支會觸發動作。 條件和相符項目是按照順序進行評估,如果條件為 true 或者找到相符項目時則會停止。
如果沒有條件為 true ,未找到匹配項,並且您未指定預設結果,則返回 Blank。
語法
If( 條件, ThenResult [, 默認結果 ])
If(Condition1,ThenResult1 [, Condition2,ThenResult2 ,...[, DefaultResult ] ])
- 條件 - 必需。 要針對 true 測試的公式。 此類公式通常包含比較 運算子 (例如 <,>,和 =) 並測試函式,例如 IsBlank 和 IsEmpty。
- ThenResults - 必需。 針對評估為 true 的條件傳回的對應值。
- DefaultResult - 可選。 如果沒有條件評估為 true 時要傳回的值。 如果您沒有指定這個引數,會傳回 空白。
Switch( 公式, 匹配 1, 結果 1 [, 匹配 2, 結果 2,...[, DefaultResult ] ])
- 公式 - 必需。 評估相符項目的公式。 此公式只評估一次。
- 匹配項 - 必需。 與 Formula 的結果進行比較的值。 如果找到完全相符的項目,則會傳回對應的 Result。
- 結果 - 必需。 找到完全相符的項目時傳回的對應值。
- DefaultResult - 可選。 如果找不到完全相符的項目,則會傳回此值。 如果您沒有指定這個引數,會傳回 空白。
範例
公式中的值
在下列範例中,名為 Slider1 的 Slider 控制項值為 25。
公式 | 描述 | Result |
---|---|---|
if(Slider1.Value = 25,“結果 1”) | 條件是 true,並傳回對應的結果。 | "Result1" |
if(滑塊 1.值 = 25,“結果 1”,“結果 2”) | 條件是 true,並傳回對應的結果。 | "Result1" |
if(Slider1.值 > 1000,“result1”) | 條件是 false ,且不會提供 DefaultResult。 | 空白 |
if(Slider1.值 > 1000,“result1”,“result2”) | 條件是 false ,且已提供並傳回 DefaultResult。 | "Result2" |
if(Slider1.Value = 25,“結果 1”,Slider1.值 > 0,“結果 2”) | 第一個條件是 true,並傳回對應的結果。 第二個條件也是 true,但是不會評估它,因為它會比評估為 true 的條件更晚出現在引數清單中。 | "Result1" |
if (IsBlank(滑塊 1.值),“結果 1”,IsNumeric (滑塊 1.值),“結果 2”) | 第一個條件是 false,因為滑桿不是 空白。 第二個條件是 true,因為滑桿值是數字,並傳回對應的結果。 | "Result2" |
if(Slider1.值 > 1000,“result1”,Slider1.值 > 50,“result2”,“result3”) | 第一個和第二個條件都是 false ,且已提供並傳回 DefaultResult。 | "Result3" |
Switch(Slider1.Value,25,“result1”) | 滑桿的值符合要檢查的第一個值,並且傳回對應的結果。 | "Result1" |
Switch(Slider1.Value,20,“result1”,25,“result2”,30,“result3”) | 滑桿的值符合要檢查的第二個值,並且傳回對應的結果。 | "Result2" |
Switch(Slider1.Value,20,“Result1”,10,“Result2”,0,“Result3”,“DefaultResult”) | 滑桿的值不符合要檢查的任何值。 提供 DefaultResult,因此傳回該值。 | "DefaultResult" |
行為公式中的分支
在這些範例中,名為 FirstName 的 Text input 控制項已在其中輸入 "John" 的值。
公式 | 描述 | 結果 |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | 條件是 true,因此執行 Navigate 函式。 您可以使用 IsBlank 函式來測試是否已填入必要的表單欄位。 如果 FirstName 是空白,此公式不會有任何作用。 | 真 顯示變更為 Screen1。 |
if (IsBlank(FirstName.Text),Navigate (Screen1,ScreenTransition.None),Back()) | 沒有 ! 運算子,條件是 false,因此並未執行 Navigate 函式。 提供 Back 函式作為 DefaultResult,因此它會執行。 | 真 顯示會回到先前所示的畫面。 |
Switch (FirstName.Text,“Carlos”,Navigate(Screen1,ScreenTransition.None),“Kirstin”,Navigate (Screen2,ScreenTransition.None),“John”,Navigate (Screen3,ScreenTransition.None)) | FirstName.Text 的值會根據 "Carlos"、"Kirstin" 和 "John" 的順序進行比較。 找到 "John" 的相符項目,因此應用程式會瀏覽至 Screen3。 | 真 顯示變更為 Screen3。 |
按步就班
新增 Text input 控制項,如果它依預設沒有該名稱,則將其命名為 Text1。
在 Text1 中,輸入 30。
新增 Label 控制項,並將其 Text 屬性設定為下列公式:
if(value(text1.text) < 20,“訂購更多!”,value(text1.Text) < 40,“訂購更多!”,text1.Text)Label 控制項顯示訂購更多!,因為 Text1 的值大於 20 小於 40。
在 Text1 中,輸入 15。
Label 控制項顯示訂購非常更多!,因為 Text1 的值小於 20。
在 Text1 中,輸入 50。
Label 控制項會顯示您輸入的值,因為它超過 40。