測試值是空白,還是資料表未包含記錄,並提供方法來建立「空白」值。

概觀

空白是「無值」或「未知值」的預留位置。 如果使用者尚未在 文字輸入 控制項中輸入任何字元,則該控制項會「空白」。 只要使用者在其中輸入字元,相同的控制項將不再為空白。 某些資料來源可以儲存和傳回 NULL 值,而這些 NULL 值在 PowerApps 中會呈現為「空白」。

注意:此時,只有本機集合才支援儲存「空白」值。 我們知道有許多資料來源支援「空白」 (NULL) 值,因此正在努力提升這項限制。

任何屬性或計算的值可以是空白。 例如,布林值通常有兩個值之一︰truefalse。 但除了這兩個之外,它還可以是空白。 這類似於 Microsoft Excel,其中工作表儲存格一開始為空白,但在所有值之中可容納 TRUEFALSE 值。 儲存格的內容隨時都可以移除,並會回到空白狀態。

空白特定於未包含任何記錄的資料表。 資料表結構可能會保持不變,以資料行名稱完整,但是資料表中沒有資料。 資料表可能會以空白為開始,採用記錄且不再為空白,然後移除記錄並再一次是空的。

說明

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

IsBlank 函式會測試空白值。 可在下列情況找到空白值︰

  • Blank 函式的傳回值。
  • 控制項屬性並未設定任何公式。
  • 文字輸入控制項中未輸入任何值,或未在清單方塊中選取項目。 您可以使用 IsBlank來提供欄位為必填的意見反應。
  • 未包含任何字元的字串具有 Len 為 0。
  • 函式中發生錯誤。 通常,函式的其中一個引數不是有效。 如果引數的值為空白,許多函式會傳回空白。
  • 連接的資料來源(例如 SQL Server) 可能會使用 "null" 的值。 這些值在 PowerApps 中會顯示為空白。
  • 未指定 If 函式的 else 部分,且所有條件為 false
  • 您使用了 Update 函式,但是並未指定所有資料行的值。 如此一來,便不會有任何值放入您未指定的資料行。

Coalesce 函式會按順序評估其引數,並傳回第一個非*空白*值。 使用此函式以不同的值來取代*空白*值,但非*空白*值保持不變。 如果所有引數均為*空白*,則函式會傳回*空白*。 Coalesce 的所有引數必須屬於相同類型;例如,不能混合數字與文字字串。 Coalesce( value1, value2 ) 相當於更精簡的 If( IsBlank( value1 ) value1, value2 ),且不需要評估 value1 兩次。

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

IsBlankIsEmpty 的傳回值都是布林值 truefalse

語法

Blank()

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

  • Value(s) – 必要項目。 要測試的值。 每個值會依序進行評估,直到發現非*空白*值。 第一個非*空白*值之後的值不會受評估。

IsBlank( Value )

  • Value – 必要項目。 要測試的值。

IsEmpty( Table )

  • Table - 必要項目。 要測試記錄的資料表。

範例

Blank

注意︰此時,下列範例只適用於本機集合。 我們知道有許多資料來源支援「空白」 (NULL) 值,因此正在努力提升這項限制。

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

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

    ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )

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

  4. 在 [檔案] 功能表上,按一下或點選 [集合]。

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

    顯示 Seattle 的天氣為 Rainy 的集合

  5. 按一下或點選上一步箭頭以返回預設工作區。

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

    IsBlank( First( Cities ).Weather )

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

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

    Patch( Cities, First( Cities ), { Weather: Blank() } )

  8. 預覽應用程式,並按一下或點選您已新增的按鈕,然後關閉 [預覽]。

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

    顯示 Seattle 的 Weather 欄位空白的集合

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

聯合

公式 說明 結果
Coalesce( Blank(), 1 ) 測試 Blank 函式的傳回值,一律會傳回「空白」值。 因為第一個引數為*空白*,會繼續進行下一個引數評估,直到找到非*空白*值。 1
Coalesce( Blank(), Blank(), Blank(), Blank(), 2, 3 ) Coalesce 會從引數清單的開頭開始,依序評估每個引數,直到找到非*空白*值為止。 在此案例中,前四個引數均傳回*空白*,因此評估會繼續至第五個引數。 第五個引數為非*空白*,因此評估到此為止。 會傳回第五個引數的值,而第六個引數則不受評估。 2

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 ) ) If 函式沒有 *ElseResult*。 因為條件一律為 false,這個 If 一律會傳回空白。 true

IsEmpty

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

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

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

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

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

    此集合有兩筆記錄,而並非空白。 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