PowerApps|LookUpとifを組み合わせた3つの使用例

PowerAppsのキャンバスアプリで、
LookUp関数は多くの場面で活躍してくれます。
中でも、If関数とは、よく組み合わせて使うことが多いです。
今回は、LookUp関数とIf関数を組み合わせて使う使用例を紹介します。
紹介するコードは実際に私が実装して試したものですので、安心して参考にしてもらえればと思います。
では、早速みていきましょう。
目次(クリックで読みたい部分にジャンプできます)
LookUp関数の基本の使用方法
PowerApps の LookUp 関数は、
データソース内で特定の条件を満たす最初のレコードを検索するために使用されます。
全てのレコードを抽出するには、filter関数を使用します。
LookUpの基本的な構文は以下のようになります。
LookUp(DataSource, Condition).Field
DataSource
: 検索を行うデータテーブルを指定します。Condition
: レコードが条件を満たすかどうかを評価する式です。Field
: 条件を満たすレコードから返される値を指定します。
簡単に使用する場合は以下のようにします。
例えば、Employees というデータソースがあり、特定の従業員IDを持つ従業員の名前を検索したい場合、以下のような式が使用できます。
使用例
LookUp(Employees, EmployeeID = 123).Name

ここから、ifとLookUpを組み合わせた使用例を見ていきます!
【使用例①】条件を満たすレコードが存在する場合のみ実行
一番よく使う方法として、レコードが存在する場合にのみ値を返すようにすることです。
If(
IsBlank(LookUp(DataSource, Condition)),
"条件を満たすレコードはありません",
LookUp(DataSource, Condition).Field
)
IsBlank(LookUp(DataSource, Condition))
最初のもし、LookUpにヒットしなければ、IsBlankメソッドが「true」になります。
「true」の場合には、「条件を満たすレコードはありません」が表示されます。
【使用例②】条件に基づくフィールド値の更新
特定の条件を満たすレコードが存在する場合に限り、
そのレコードの特定のフィールド値を更新する例です。
If(
Not(IsBlank(LookUp(Orders, OrderID = TextInput_OrderID.Text))),
Patch(Orders, LookUp(Orders, OrderID = TextInput_OrderID.Text), {Status: "処理済み"})
)
条件に合うレコードに対して、Statusを「処理済み」に変更する処理をします。
Notをつけることで、レコードがある場合に対してのみPatch処理を行うことができます。
【使用例③】複数条件の組み合わせ
LookUp 関数で
複数の条件を組み合わせて使用し、それに基づいて特定のアクションを実行する例です。
If(
Not(IsBlank(LookUp(Products, ProductID = TextInput_ProductID.Text && Stock > 0))),
"在庫あり",
"在庫なし"
)
この例では、ユーザーが入力した商品IDを持つ商品が Products
データソースに存在し、
かつ在庫数が0より大きい場合に「在庫あり」と表示します。それ以外の場合は「在庫なし」と表示します。
まとめ
今回は、If関数とLookUp関数の使用方法について紹介しました。
これらの組み合わせでif文とLookUpをうまく活用することができるようになります。
レコードが存在するかどうかを確かめるのには、LookUpは活用できますので、ぜひ使ってみてください。
では、また!