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 - 必需。 要測試記錄的資料表。

範例

空白

注意

下列範例目前只適用本機集合物件。 如果您在設定>即將推出的功能>實驗性下,開啟公式層級錯誤管理實驗性功能,您可以在其他資料來源中儲存空白值。 我們積極致力於完成此功能,並完全正確分隔空白值與錯誤。

  1. 從頭建立應用程式,並新增 Button 控制項。

  2. 將按鈕的 OnSelect 屬性設為此公式:

    ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )
    
  3. 預覽應用程式,並點擊或點選您已新增的按鈕,然後關閉預覽。

  4. 在 File 功能表上,點擊或點選 Collections。

    即會出現 Cities 集合物件,顯示一筆含有 "Seattle" 和 "Rainy" 的記錄:

    顯示西雅圖為雨天氣候的集合物件。

  5. 點擊或點選返回箭頭以返回預設工作區。

  6. 新增 Label 控制項,並將其Text屬性設定為下列公式:

    IsBlank( First( Cities ).Weather )
    

    標籤顯示 false,因為 Weather 欄位包含值 ("Rainy")。

  7. 新增第二個按鈕,並將其 OnSelect 屬性設定為下列公式:

    Patch( Cities, First( Cities ), { Weather: Blank() } )
    
  8. 預覽應用程式,並點擊或點選您已新增的按鈕,然後關閉預覽。

    Cities 中第一筆記錄的 Weather 欄位會取代為 空白,以移除先前的 "Rainy"。

    顯示西雅圖天氣欄位為空白的集合物件。

    標籤顯示 true,因為 Weather 欄位不再包含值。

Coalesce

公式 描述 結果
合併 (空白(),1) 測試 Blank 函式的傳回值,始終傳回 空白 值。 因為第一個引數為 空白,會繼續進行下一個引數評估,直到找到非 空白 值為止。 1
合併(“”,“2”) 測試第一個空字串引數。 因為第一個引數為空字串,會繼續進行下一個引數評估,直到找到非 空白 值和空字串為止。 2
合併 (Blank(),“”,Blank(),“”,“3”,“4”) Coalesce 從參數列表的開頭開始,依次評估每個參數,直到找到非空 值和非空字串。 本案例中,前四個引數均傳回 空白 或空字串,因此評估會繼續到第五個引數。 第五個引數是非 空白 且非空字串,所以評估會在此停止。 會傳回第五個引數值,而第六個引數則不進行評估。 3
合併(“”) 測試第一個空字串引數。 因為第一個引數是空字串,而且並無其他引數,所以函式會傳回 空白。 空白

IsBlank

  1. 從頭開始建立應用程式,並新增文字輸入控制項,然後將它命名為 FirstName。

  2. 新增標籤,並將其 Text 屬性設定為下列公式:

    If( IsBlank( FirstName.Text ), "First Name is a required field." )
    

    預設文字輸入控制項的Text屬性設定為 "Text input"。 因為屬性包含值不是空白,而且標籤不顯示任何訊息。

  3. 從文字輸入控制項移除所有字元,包括任何空格。

    因為 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

  1. 從頭建立應用程式,並新增 Button 控制項。

  2. 將按鈕的 OnSelect 屬性設為此公式:

    收集(霜淇淋, { 口味:草莓,數量:300 }, { 口味:巧克力,數量:100 } )

  3. 預覽應用程式,並點擊或點選您已新增的按鈕,然後關閉預覽。

    已建立名為 IceCream 的集合物件,其中包含這項資料︰

    數量分別是 300 個 100 個的草莓和巧克力口味資料表。

    此集合物件有兩筆記錄,而且並非空白。 IsEmpty(IceCream) 返回 false, 而 CountRows(IceCream) 返回 2。

  4. 新增第二個按鈕,並將其 OnSelect 屬性設定為下列公式:

    Clear(IceCream)

  5. 預覽應用程式,並點擊或點選第二個按鈕,然後關閉預覽。

    集合物件現在是空的︰

    口味和數量的集合為空集合。

    Clear 函式從集合物件移除所有記錄,造成空集合物件。 IsEmpty(IceCream) 返回 true,CountRows(IceCream) 返回 0。

您也可以使用 IsEmpty 測試計算的資料表是否為空白,如下列範例所示︰

公式 描述 結果
IsEmpty([ 1,2,3 ]) 單欄資料表包含三筆記錄,因此不是空白。 假
IsEmpty([ ]) 單欄資料表不含記錄,因此為空白。 真
IsEmpty (過濾器([ 1,2,3 ],值 > 5)) 單欄資料表不含任何大於 5 的值。 來自篩選的結果不含任何記錄,因此是空白的。 真