Blank、Coalesce、IsBlank 和 IsEmpty 函式
適用於: 畫布應用 桌面流 Dataverse 公式列 模型驅動應用 Power Pages Power Platform 命令行介面
測試值是否為空白或未包含 記錄 的 資料表,並提供建立 空白 值的方式。
概觀
空白 是「無值」或「未知值」的佔位元。例如,如果使用者尚未進行選擇, 則 Combo box 控件的 Slected 屬性為空 。 許多資料來源會儲存和傳回 NULL 值,在 Power Apps 中會呈現為 空白。
在 Power Apps 中,任何屬性或計算值可以 空白。 例如,布林值通常二選一︰true 或 false。 但除了這兩種之外,它也可以 空白,表示狀態是未知的。 這類似於 Microsoft Excel,工作表儲存格一開始空白沒有內容,但可容納 TRUE 或 FALSE 值 (除此之外)。 儲存格的內容隨時都可以再次清除,並返回 空白狀態。
空字串 是指不包含字元的字串。 Len 函式 針對此字串返回零,而且它可以在公式中寫為兩個雙引號,中間不加任何 ""
。 某些控制項和資料來源使用空白字串來表示 "無值" 條件。 若要簡化應用程式的建立,IsBlank 和 Coalesce 函式會同時測試 空白 值或空字串。
在 IsEmpty 函式的上下文中,空白 專用於不包含任何記錄的資料表。 資料表結構可能不變,以 欄位 名稱完成,但資料表沒有資料。 資料表可能以空白開始,採納記錄且不再為空白,然後移除記錄並再一次空白。
注意
我們正在轉換期。 直到現在 空白 也被用來回報錯誤,因此無法從錯誤區分有效的 "無值"。 為此,目前只有本機集合物件才支援儲存 空白 值。 如果您在設定>即將推出的功能>實驗性下,開啟公式層級錯誤管理實驗性功能,您可以在其他資料來源中儲存空白值。 我們積極致力於完成此功能,並完全正確分隔空白值與錯誤。
空白
適用於: 畫布應用 模型驅動應用 Dataverse 公式列
Blank 函式會傳回 blank 值。 使用這個將 NULL 值儲存在支援這些值的資料來源中,以便有效地移除欄位中的任何值。
IsBlank
適用於: 畫布應用 模型驅動應用
IsBlank 函式會測試 空白 值或空字串。 測試包括空白字串,以簡化應用程式的建立,因為某些資料來源和控制項在未出現任何值時使用空白字串。 若要特別測試 空白 值,請使用 if( Value = Blank(), ...
而不是 IsBlank。 IsBlank 函式會將空的資料表視為空白,您應該使用 IsEmpty 來測試資料表。
為現有應用程式啟用錯誤處理時,請考慮將 IsBlank 取代為 IsBlankOrError 以保留現有應用程式行為。 在新增錯誤處理之前,空白值用於表示來自資料庫與錯誤值的 Null 值。 錯誤處理會將這兩個空白的解釋分開,這可能會變更繼續使用 IsBlank 的現有應用程式的行為。
IsBlank 的傳回值是布林值 True 或 False。
Coalesce
適用於: 畫布應用 模型驅動應用
Coalesce 函式會按序評估其引數,並傳回第一個非 空白 值或空白字串。 您可以使用此函式,以不同的值取代 空白 值或空字串,但是保持非 空白 與非空字串值不變。 如果所有的參數都是空白或空白字串,則函式將傳回空白,讓聯合成為將空字串轉換成空白值的好方法。
Coalesce( value1, value2 )
是更簡潔的 If( Not IsBlank( value1 ), value1, Not IsBlank( value2 ), value2 )
等效值,並且不需要 對 value1 和 value2 進行兩次計算。 If 函式 在本案例中沒有 "else" 公式時傳回 空白。
Coalesce 的所有引數必須屬於相同類型;例如不能混合數字與文字字串。 聯合的傳回值屬於這種常見類型。
IsEmpty
適用於: 畫布應用 模型驅動應用
IsEmpty 函式會測試資料表是否包含任何記錄。 它相當於使用 CountRows 函式,並檢查是否為零。 您可以合併使用 IsEmpty 與 Errors 函式檢查資料來源錯誤。
IsEmpty 的傳回值是布林值 True 或 False。
語法
空白()
合併( 值 1 [, 值 2,... ])
- values– 必需。 要測試的值。 各值都會依序評估直到值不是 空白 值,且找不到空字串為止。 不會評估此點之後的值。
IsBlank( 值 )
- Value –必需。 要測試 blank值或空字串的值。
IsEmpty( 表 )
- Table - 必需。 要測試記錄的資料表。
範例
空白
注意
下列範例目前只適用本機集合物件。 如果您在設定>即將推出的功能>實驗性下,開啟公式層級錯誤管理實驗性功能,您可以在其他資料來源中儲存空白值。 我們積極致力於完成此功能,並完全正確分隔空白值與錯誤。
從頭建立應用程式,並新增 Button 控制項。
將按鈕的 OnSelect 屬性設為此公式:
ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )
預覽應用程式,並點擊或點選您已新增的按鈕,然後關閉預覽。
在 File 功能表上,點擊或點選 Collections。
即會出現 Cities 集合物件,顯示一筆含有 "Seattle" 和 "Rainy" 的記錄:
點擊或點選返回箭頭以返回預設工作區。
新增 Label 控制項,並將其Text屬性設定為下列公式:
IsBlank( First( Cities ).Weather )
標籤顯示 false,因為 Weather 欄位包含值 ("Rainy")。
新增第二個按鈕,並將其 OnSelect 屬性設定為下列公式:
Patch( Cities, First( Cities ), { Weather: Blank() } )
預覽應用程式,並點擊或點選您已新增的按鈕,然後關閉預覽。
Cities 中第一筆記錄的 Weather 欄位會取代為 空白,以移除先前的 "Rainy"。
標籤顯示 true,因為 Weather 欄位不再包含值。
Coalesce
公式 | 描述 | 結果 |
---|---|---|
合併 (空白(),1) | 測試 Blank 函式的傳回值,始終傳回 空白 值。 因為第一個引數為 空白,會繼續進行下一個引數評估,直到找到非 空白 值為止。 | 1 |
合併(“”,“2”) | 測試第一個空字串引數。 因為第一個引數為空字串,會繼續進行下一個引數評估,直到找到非 空白 值和空字串為止。 | 2 |
合併 (Blank(),“”,Blank(),“”,“3”,“4”) | Coalesce 從參數列表的開頭開始,依次評估每個參數,直到找到非空 值和非空字串。 本案例中,前四個引數均傳回 空白 或空字串,因此評估會繼續到第五個引數。 第五個引數是非 空白 且非空字串,所以評估會在此停止。 會傳回第五個引數值,而第六個引數則不進行評估。 | 3 |
合併(“”) | 測試第一個空字串引數。 因為第一個引數是空字串,而且並無其他引數,所以函式會傳回 空白。 | 空白 |
IsBlank
從頭開始建立應用程式,並新增文字輸入控制項,然後將它命名為 FirstName。
新增標籤,並將其 Text 屬性設定為下列公式:
If( IsBlank( FirstName.Text ), "First Name is a required field." )
預設文字輸入控制項的Text屬性設定為 "Text input"。 因為屬性包含值不是空白,而且標籤不顯示任何訊息。
從文字輸入控制項移除所有字元,包括任何空格。
因為 Text 屬性不再包含任何字元,為空字串,而 IsBlank( FirstName.Text ) 將為 true。 顯示必要欄位訊息。
如需如何使用其他工具執行驗證的資訊,請參閱 Validate 函式和 搭配資料來源。
其他範例:
公式 | 描述 | 結果 |
---|---|---|
IsBlank (空白()) | 測試 Blank 函式的傳回值,始終傳回 空白 值。 | 真 |
IsBlank(“”) | 未包含任何字元的字串。 | 真 |
IsBlank(“你好”) | 包含一個或多個字元的字串。 | 假 |
IsBlank( AnyCollection ) | 因為 集合物件 存在且不是空白,即使它不含任何記錄。 若要檢查空白集合物件,請改用 IsEmpty。 | 假 |
IsBlank (Mid(“你好”,17,2)) | Mid 的起始字元超過字串的結尾。 結果是空字串。 | 真 |
IsBlank (If(false,false))) | 沒有 ElseResult 的 If 函式。 因為條件一律為 false,所以這個 If 始終傳回 空白。 | 真 |
IsEmpty
從頭建立應用程式,並新增 Button 控制項。
將按鈕的 OnSelect 屬性設為此公式:
收集(霜淇淋, { 口味:草莓,數量:300 }, { 口味:巧克力,數量:100 } )
預覽應用程式,並點擊或點選您已新增的按鈕,然後關閉預覽。
已建立名為 IceCream 的集合物件,其中包含這項資料︰
此集合物件有兩筆記錄,而且並非空白。 IsEmpty(IceCream) 返回 false, 而 CountRows(IceCream) 返回 2。
新增第二個按鈕,並將其 OnSelect 屬性設定為下列公式:
Clear(IceCream)
預覽應用程式,並點擊或點選第二個按鈕,然後關閉預覽。
集合物件現在是空的︰
Clear 函式從集合物件移除所有記錄,造成空集合物件。 IsEmpty(IceCream) 返回 true,CountRows (IceCream) 返回 0。
您也可以使用 IsEmpty 測試計算的資料表是否為空白,如下列範例所示︰
公式 | 描述 | 結果 |
---|---|---|
IsEmpty([ 1,2,3 ]) | 單欄資料表包含三筆記錄,因此不是空白。 | 假 |
IsEmpty([ ]) | 單欄資料表不含記錄,因此為空白。 | 真 |
IsEmpty (過濾器([ 1,2,3 ],值 > 5)) | 單欄資料表不含任何大於 5 的值。 來自篩選的結果不含任何記錄,因此是空白的。 | 真 |