Blank、Coalesce、IsBlank、および IsEmpty 関数

適用先 : キャンバス アプリ デスクトップ フロー Dataverse 数式列 モデル駆動型アプリ Power Platform CLI

値が空白であるかどうか、または テーブルレコード が含まれていないかどうかをテストし、空白の値を作成する方法を提供します。

概要

空白は、コンボ ボックスコントロールのSelectedプロパティは、ユーザーが選択していない場合、空白になります。 多くのデータ ソースは、Power Apps で空白として表される NULL 値 を保存し、返すことができます。

Power Apps のプロパティまたは計算された値はいずれも、空白にすることができます。 たとえば、ブール値には通常、true または false という 2 つの値のいずれかがあります。 しかし、これら 2 つに加えて、状態が確定してないことを示す空白にもすることができます。 ワークシート セル は内容を含まない空白として開始しますが、(とりわけ) TRUE または FALSE の値を保持することができる Microsoft Excel に似ています。 どの時点でも、セルの内容は消去でき、空白状態に返すことができます。

空の文字列は文字を含まない文字列を意味します。 Len 関数 はこのような文字列のゼロを返し、"" の間に何もない 2 つの二重引用符として数式に書き込むことができます。 一部のコントロールおよびデータ ソースは、空の文字列を使用して "値なし" の条件を示します。 アプリの作成を簡素化するために、IsBlank および Coalesce 関数は空白値または空の文字列の両方をテストします。

IsEmpty 関数のコンテキストでは、はレコードを含まないテーブルに固有です。 テーブルの構造はそのままで、 の名前を付けて完了している場合がありますが、テーブルにはデータがありません。 テーブルは空として開始され、レコードを取り入れるともう空ではなくなり、次にレコードを削除して再度空にすることができます。

Note

切り替えの期間にいます。 これまでは、空白を使用してエラーをレポートし、エラーから有効な "値なし" を区別することができませんでした。 このため、現時点で、空白値の格納は、ローカル コレクションでのみサポートされています。 設定>今後の機能>実験的数式レベルのエラー管理実験機能をオンにしておくと、他のデータソースに空白の値を保存することができます。 この機能を完了し、およびエラーからの空白値の適切な分離を完了することに積極的に取り組んでいます。

空白

適用先: キャンバス アプリ モデル駆動型アプリ Dataverse 数式列

Blank 関数は、空白値を返します。 これを使用して、これらの値をサポートするデータ ソースに NULL 値を格納し、フィールドから値を効果的に削除します。

IsBlank

適用先: キャンバス アプリ モデル駆動型アプリ

IsBlank 関数は、空白値または空の文字列をテストします。 値が存在しない場合に一部のデータ ソースおよびコントロールが空の文字列を使用するため、テストには、アプリの作成を簡素化する空の文字列が含まれます。 特に空白値をテストするには IsBlank の代わりに if( Value = Blank(), ... を使用します。 IsBlank 関数は空のテーブルを空白ではないと見なし、IsEmpty を使用してテーブルをテストする必要があります。

既存のアプリに対するエラー処理を有効化する際、IsBlankIsBlankOrError で置き換えて既存アプリの動向を保存することを検討してください。 エラー処理を追加する前に、空欄 の値は、データベースからの null 値とエラー値の両方を表すために使用されました。 エラー処理は、これら 2 つの 空欄 の解釈を分離します。これは、引き続き IsBlank を使用する既存のアプリの動作が変わる可能性があります。

この IsBlank の戻り値は、ブール値の true または false です。

Coalesce

適用先: キャンバス アプリ モデル駆動型アプリ

Coalesce 関数はその引数を順番に評価し、空白または空の文字列ではない最初の値を返します。 この関数を使用して、空白値または空の文字列を別の値に置換えますが、空白でない、および空でない文字列の値は変更しない状態にしておきます。 すべての引数が 空欄 または空の文字列の場合、関数は 空欄 を返し、Coalesce を空の文字列を 空欄 値に変換する良い方法にします。

Coalesce( value1, value2 ) は、If( Not IsBlank( value1 ), value1, Not IsBlank( value2 ), value2 ) のより簡潔な同等物であり、value1value2 を 2 回評価する必要はありません。 ここにあるように "その他" の数式がない場合 、If 関数空白を返します。

Coalesce のすべての引数は同じ種類である必要があり、たとえば、数値とテキスト文字列を組み合わせることはできません。 Coalesce からの戻り値はこの一般的なタイプです。

IsEmpty

適用先: キャンバス アプリ モデル駆動型アプリ

IsEmpty 関数は、テーブルにレコードが含まれているかどうかをテストします。 これは、CountRows 関数を使用してゼロを確認するのと同等です。 IsEmptyErrors 関数を組み合わせることにより、データ ソース エラーを検査できます。

この IsEmpty の戻り値は、ブール値の true または false です。

構文

Blank()

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

  • Value(s) – 必須。 テストする値。 各値は、空白でない、および空の文字列でない値が見つかるまで、順番に評価されます。 このポイント以降の値は評価されません。

IsBlank( Value )

  • Value – 必須。 空白値または空の文字列をテストをする値。

IsEmpty( Table )

  • Table - 必須。 レコードをテストするテーブル。

使用例

空白

Note

現時点で、次の例はローカル コレクションでのみ機能します。 設定>今後の機能>実験的数式レベルのエラー管理実験機能をオンにしておくと、他のデータソースに空白の値を保存することができます。 この機能を完了し、およびエラーからの空白値の分離を完了することに積極的に取り組んでいます。

  1. アプリを最初から作成し、Button コントロールを追加します。

  2. ボタンの OnSelect プロパティを次の数式に設定します。

    ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )
    
  3. アプリをプレビューし、追加したボタンをクリックまたはタップして、プレビューを閉じます。

  4. ファイル メニューでコレクションをクリックまたはタップします。

    市区町村コレクションが表示され、"シアトル" および "雨" の 1 つのレコードが表示されます。

    雨の天気とシアトルを表示するコレクション。

  5. 後ろ向きの矢印をクリックまたはタップして、既定のワークスペースに戻ります。

  6. Label コントロールを追加し、その Text プロパティを次の数式に設定します。

    IsBlank( First( Cities ).Weather )
    

    天気 フィールドに値 ("雨") が含まれているため、ラベルには false と表示されます。

  7. 2 つ目のボタンを追加し、その OnSelect プロパティを次の数式に設定します。

    Patch( Cities, First( Cities ), { Weather: Blank() } )
    
  8. アプリをプレビューし、追加したボタンをクリックまたはタップして、プレビューを閉じます。

    市区町村の最初のレコードの天気フィールドは空白に置き換えられ、以前あった "雨" は削除されます。

    空白の天気のフィールドとシアトルを表示しているコレクション。

    天気フィールドには値が含まれていないため、ラベルには true と表示されます。

Coalesce

計算式 内容 結果
Coalesce( Blank(), 1 ) 常に空白値を返す Blank 関数から戻り値をテストします。 最初の引数が空白であるため、空白でない値および空でない文字列が見つかるまで、評価は次の引数で続行されます。 1
Coalesce( "", "2" ) 空の文字列である最初の引数をテストします。 最初の引数が空の引数であるため、空白でない値および空でない文字列が見つかるまで、評価は次の引数で続行されます。 2
Coalesce( Blank(), "", Blank(), "", "3", "4" ) Coalesce は、引数リストの先頭で開始し、空白でない値および空でない文字列が見つかるまで、各引数を次々に評価します。 この場合は、最初の 4 つの引数はすべて空白または空の文字列を返すため、評価は 5 番目の引数に続きます。 5 番目の引数は空白でないおよび空でない文字列なので、評価はここで停止します。 5 番目の引数の値が返され、6 番目の引数は評価されません。 3
Coalesce( "" ) 空の文字列である最初の引数をテストします。 最初の引数が空の文字列であり、これ以上引数がないため、関数は空白を返します。 blank

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" ) 1 つ以上の文字が含まれている文字列。 false
IsBlank( AnyCollection ) レコードが含まれていなくても、コレクション が存在するため、空白ではありません。 空のコレクションを検査するには、代わりに IsEmpty を使用します。 false
IsBlank( Mid( "Hello", 17, 2 ) ) Mid の開始文字は文字列の末尾よりも後ろにあります。 結果は、空の文字列です。 True
IsBlank( If( false, false ) ) ElseResult がない If 関数。 条件が常に false になるため、この If は常に空白を返します。 True

IsEmpty

  1. アプリを最初から作成し、Button コントロールを追加します。

  2. ボタンの OnSelect プロパティを次の数式に設定します。

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

  3. アプリをプレビューし、追加したボタンをクリックまたはタップして、プレビューを閉じます。

    IceCream という名前のコレクションが作成され次のデータが含まれます。

    Strawberry と Chocolate のフレーバーの数量が 300 と 100 のテーブル。

    このコレクションに 2 つのレコードは含まれ、空ではありません。 IsEmpty( IceCream )false を返し、および CountRows( IceCream )2 を返します。

  4. 2 つ目のボタンを追加し、その OnSelect プロパティを次の数式に設定します。

    Clear( IceCream )

  5. アプリをプレビューし、2 つ目のボタンをクリックまたはタップして、次にプレビューを閉じます。

    これで、コレクションは空になりました。

    空のコレクションとして Flavor と Quantity を持つコレクション。

    Clear 関数はコレクションからすべてのレコードを削除し、その場合は空のコレクションになります。 IsEmpty( IceCream )true を返し、および CountRows( IceCream )0 を返します。

以下の例のように、IsEmpty を使用して、計算されたテーブルが空かどうかをテストすることもできます。

計算式 内容 結果
IsEmpty( [ 1, 2, 3 ] ) 単一列テーブルに 3 つのレコードが含まれており、したがって、空ではありません。 false
IsEmpty( [ ] ) 単一列テーブルにはレコードが含まれず、空です。 true
IsEmpty( Filter( [ 1, 2, 3 ], Value > 5 ) ) 単一列テーブルに 5 より大きい値が含まれていません。 フィルターからの結果にはレコードが含まれておらず、空です。 True