PowerApps|Patch関数で複数のレコードを一括更新する方法〜If, ForAll, Filter〜

PowerAppsでPatch関数を使うと、

レコードの更新を行うことができます。

レコードの更新の際には、複数レコードを一括更新したい場合などもあると思います。

今回は、Patch関数を用いて条件に合う複数レコードを一括更新する方法について紹介します。

一括更新ができるようになることで、更新したいデータを1つの操作(ボタンなど)で行えることができます。

楽になるので、最後まで一緒に見ていきましょう!

Patch関数で複数レコードを更新する全体像

Patch関数により、複数レコードを更新する場合には、

ForAll関数と組み合わせて使用することが多いです。

ForAll関数とは?

ForAll関数とは、

特定のテーブル型データ全てに対して、処理を繰り返すことができる関数です。

ForAll関数で繰り返し処理の中で、Patch関数を使用するというイメージになります。

【コード例】Patch関数による複数レコードの更新の概要

まずは、簡単なコード例を見てみてください。

ForAll関数により、対象のテーブル型データに対して、Patch関数が繰り返し実行されます。

ForAll(
   テーブル型データ,
    Patch(
       テーブル型データ,
        ThisRecord,
        { Status: "Active" }
    )
)

上記では、テーブル型データの全てに対して

Statusを"Active"に変更しています。

【具体例①】条件に合うデータのみPatchで更新

また、全てのデータではなく、特定の条件にあったデータのみ更新したいという場合もあるかと思います。

例えば、以下の従業員の「名前」「部署」「ステータス」が格納してあるデータがあるとします。

「営業部門(Sales)のステータスのみ"Active"に変更したい」としましょう。

ForAll(
    Filter(Employees, Department = "Sales"),
    Patch(
        Employees,
        ThisRecord,
        { Status: "Active" }
    )
)

このPatch関数を実行することによって、データは以下のようになります。

あべべ

特定の条件などをFilter関数やif関数を使用することで、絞り込み更新していく流れです。

【具体例②】ギャラリー内の特定のデータを一括更新する

次にPowerAppsでデータを複数扱うのが、ギャラリーとの組み合わせではないでしょうか。

ただ、ギャラリーに表示してあるデータに対しても、

基本的に、ForAllとPatchを組み合わせて使うことには変わりありません。

ギャラリー内の情報を取得したい時には、「Gallery1.AllItems」を使用します。

ForAll(
    Filter(Gallery1.AllItems, Department = "Sales"),
    Patch(
        Employees,
        ThisRecord,
        { Status: "Active" }
    )
)

先ほど紹介したコードとあえて同じにしています。

ギャラリーに表示されているデータは、Gallery1.AllItemsで取得しています。

あべべ

このように、複数レコードを一括更新する時には、ForAllとセットで使うということを覚えておいてください!

そうすると、Patchもより使いやすくすることができますよ。

まとめ

今回は、Patch関数を使用して複数レコードを更新する方法について紹介しました。

では、より具体的に使用方法を知ることで、さらに具体的なイメージを掴むことができます。

以下の例では、ギャラリーに行番号をふる例です。
ギャラリーを使うと多くの方が表示したいと思うことがある場面です。

それらは、Patch, ForAllを使用しています。その方法を知るとより活用方法を広げることができるでしょう

(Visited 1,613 times, 1 visits today)