Blank、Coalesce、IsBlank 和 IsEmpty 函式

適用於: 畫布應用程式 桌面流程 Dataverse 公式欄 模型導向應用程式 Power Platform CLI

測試值是否為空白或未包含 記錄資料表,並提供建立 空白 值的方式。

概觀

Blank 是「無值」或「未知值」的預留位置。例如,如果使用者尚未選取,則 Combo box 控制項的 Selected 屬性為空白。 許多資料來源會儲存和傳回 NULL 值,在 Power Apps 中會呈現為 空白

在 Power Apps 中,任何屬性或計算值可以 空白。 例如,布林值通常二選一︰truefalse。 但除了這兩種之外,它也可以 空白,表示狀態是未知的。 這類似於 Microsoft Excel,工作表儲存格一開始空白沒有內容,但可容納 TRUEFALSE 值 (除此之外)。 儲存格的內容隨時都可以再次清除,並返回 空白狀態。

空字串 意指不包含任何字元的字串。 Len 函式 針對此字串返回零,而且它可以在公式中寫為兩個雙引號,中間不加任何 ""。 某些控制項和資料來源使用空白字串來表示 "無值" 條件。 若要簡化應用程式的建立,IsBlankCoalesce 函式會同時測試 空白 值或空字串。

IsEmpty 函式的上下文中,空白 專用於不包含任何記錄的資料表。 資料表結構可能不變,以 欄位 名稱完成,但資料表沒有資料。 資料表可能以空白開始,採納記錄且不再為空白,然後移除記錄並再一次空白。

Note

我們正在轉換期。 直到現在 空白 也被用來回報錯誤,因此無法從錯誤區分有效的 "無值"。 為此,目前只有本機集合物件才支援儲存 空白 值。 如果您在設定>即將推出的功能>實驗性下,開啟公式層級錯誤管理實驗性功能,您可以在其他資料來源中儲存空白值。 我們積極致力於完成此功能,並完全正確分隔空白值與錯誤。

Blank

適用於: 畫布應用程式 模型導向應用程式 Dataverse 公式欄

Blank 函式會傳回 blank 值。 使用這個將 NULL 值儲存在支援這些值的資料來源中,以便有效地移除欄位中的任何值。

IsBlank

適用於: 畫布應用程式 模型導向應用程式

IsBlank 函式會測試 空白 值或空字串。 測試包括空白字串,以簡化應用程式的建立,因為某些資料來源和控制項在未出現任何值時使用空白字串。 若要特別測試 空白 值,請使用 if( Value = Blank(), ... 而不是 IsBlankIsBlank 函式會將空的資料表視為空白,您應該使用 IsEmpty 來測試資料表。

為現有應用程式啟用錯誤處理時,請考慮將 IsBlank 取代為 IsBlankOrError 以保留現有應用程式行為。 在新增錯誤處理之前,空白值用於表示來自資料庫與錯誤值的 Null 值。 錯誤處理會將這兩個空白的解釋分開,這可能會變更繼續使用 IsBlank 的現有應用程式的行為。

IsBlank 的傳回值是布林值 TrueFalse

Coalesce

適用於: 畫布應用程式 模型導向應用程式

Coalesce 函式會按序評估其引數,並傳回第一個非 空白 值或空白字串。 您可以使用此函式,以不同的值取代 空白 值或空字串,但是保持非 空白 與非空字串值不變。 如果所有的參數都是空白或空白字串,則函式將傳回空白,讓聯合成為將空字串轉換成空白值的好方法。

Coalesce( value1, value2 ) 是相當簡潔的 If( Not IsBlank( value1 ), value1, Not IsBlank( value2 ), value2 ) 等效項目,不需要 value1value2 進行兩次計算。 If 函式 在本案例中沒有 "else" 公式時傳回 空白

Coalesce 的所有引數必須屬於相同類型;例如不能混合數字與文字字串。 聯合的傳回值屬於這種常見類型。

IsEmpty

適用於: 畫布應用程式 模型導向應用程式

IsEmpty 函式會測試資料表是否包含任何記錄。 它相當於使用 CountRows 函式,並檢查是否為零。 您可以合併使用 IsEmptyErrors 函式檢查資料來源錯誤。

IsEmpty 的傳回值是布林值 TrueFalse

語法

Blank()

Coalesce (Value1 [,Value2,... ])

  • Value(s) – 必要項目。 要測試的值。 各值都會依序評估直到值不是 空白 值,且找不到空字串為止。 不會評估此點之後的值。

IsBlank( Value )

  • Value - 必要項目。 要測試 blank值或空字串的值。

IsEmpty( Table )

  • Table – 必要。 要測試記錄的資料表。

範例

Blank

Note

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

  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

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

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() ) 測試 Blank 函式的傳回值,始終傳回 空白 值。 true
IsBlank( "" ) 未包含任何字元的字串。 true
IsBlank( "Hello" ) 包含一個或多個字元的字串。 false
IsBlank( AnyCollection ) 因為 集合物件 存在且不是空白,即使它不含任何記錄。 若要檢查空白集合物件,請改用 IsEmpty false
IsBlank( Mid( "Hello", 17, 2 ) ) Mid 的起始字元超過字串的結尾。 結果是空字串。 true
IsBlank( If( false, false ) ) 沒有 ElseResultIf 函式。 因為條件一律為 false,所以這個 If 始終傳回 空白 true

IsEmpty

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

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

    Collect( IceCream, { Flavor: "Strawberry", Quantity: 300 }, { Flavor: "Chocolate", Quantity: 100 } )

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

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

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

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

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

    Clear( IceCream )

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

    集合物件現在是空的︰

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

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

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

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