Power AppsのnullやらBlankの扱いがC#と結構違ったので、改めて調べた内容をメモ。
概要
Power Appsにおいて、「空白」とは「値がない」または「不明な値」の仮置きです。
例えば選択されていないコンボボックスのSelectedプロパティは空白になります。
さらに、Power Appsではbool値もtrue、falseの他に空白という値を持つことができます。
Excelを思い浮かべてみてください。セルの内容は消すことができますよね?
ちなみに、空(Empty)はレコードを含まないテーブルを指します。
注意:
現在空白とかの扱いは切り替えの期間にいます。エラー処理とかでいまいちなことがあるので、空白値の格納はローカルコレクションでのみ使えます。
今後空白とかの扱いは変わるかもしれません。
内容
値として「空白」を使いたい場合は、Blank関数を使いましょう。
Blank関数の代入はNULL代入のようなものです。
空白かどうかをチェックするときにIsBlank関数を使いたくなると思いますが、検討が必要です。
IsBlank関数は敏感なので「空白」の他に「空の文字列」も反応しちゃいます。
if(調べたい値 = Blank())
みたいな感じでBlank関数でif文を作りましょう。
Coalesce関数は、引数を順番に見ていって最初にある「空白」や「空の文字列」以外の値を返します。
Coalesce関数はわがままなので、引数はすべて同じ種類の値じゃないとだめです。数字と文字列を一緒に渡さないでください。
IsEmpty は (CountRows() == 0) と一緒です。
BlankとEmptyは異なるので、気を付けましょう。
構文
詳しい使い方はそれぞれの公式ページをご参照ください。
Blank()
Coalesce(Value1[, Value2…])
IsBlank(Value)
IsEmpty(Table)
例
- IsBlank(“Rainy”) => false
- IsBlank(Blank()) => true
- Coalesce(Blank(),1) => 1
- Coalesce(“”, 2) => 2
- Coalesce(Blank(),””,Blank(),””,3,4) => 3
- Coalesce(“”) => Blank()
- IsBlank(Blank()) => true
- IsBlank(“”) => true
- IsBlank(“Hello”) => false
- IsBlank(何らかのコレクション) => false
- IsBlank(Mid(“Hello”), 17, 2) => false
※Helloに真ん中から17番目の文字は存在しないため
- IsBlank(if(false,false)) => true
※if関数の仕様が
「どの条件もtrueではなく、どの一致も見つからない、および既定の結果を指定しない場合は空白を返す」
なため。
※ifについてはこちら
Power Apps 今更だけどPower Appsのifを調べてみた
- IsEmpty([1,2,3]) => false
- IsEmpty([]) =>true
- IsEmpty(Filter([1,2,3],Value>5)) => true
※5以上の値が配列にないため
まとめ
Power AppsにおいてBlankはNullのようなもの。でもIsBlank関数は空文字(””)も反応してしまう。
IsEmpty関数はテーブルに使う。空文字とかは反応しない。IsEmpty(“”)はfalse。
コメント