Patch関数とは
データ ソース 内で 1 つ以上の レコード を変更または作成するか、データ ソースの外部でレコードをマージします。
公式より引用
構文
データソースのレコードを変更または作成する場合
Patch(データソース,変更または作成するレコード, {変更または作成するレコード1:変更または作成後の値1} [,{変更または作成するレコード2:変更または作成後の値2}, … ])
データソース:変更または作成するレコードを含むデータソース
変更または作成するレコード:ここで指定したレコードがデータソースからだった場合はそのレコードが変更され、 Defaults の結果を使用した場合はレコードが作成されます。
変更または作成するレコード、値:変更または作成するレコードで指定したレコードまたはDefalutsの結果によって変更または作成するレコードとその値
レコードを結合する場合
Patch( レコード1, レコード2 [, …] )
レコード:最低2個以上の結合するレコード
使い方
実際に画面を見ながら使い方を見ていきましょう。Collect関数で作成したコレクションを使用して進めていきます。
Collect関数を使用して以下のようなコレクションを作成します。以下のレコードに対してPatch関数で操作していきます。
データソースのレコードを変更する場合

ボタンを追加し、以下のコードを記入します。
Patch(テスト,First(Filter(テスト, 人= "A" ) ), { 人: "B" } )
これでボタンを押すと”人”列がAさんである最初のレコードがBさんに変更されます。

UpdateIf関数と同じように指定していないレコードの値はそのままです。
データソースのレコードを変更する場合
コレクションの値は前項の最初のものと同じです。

このコレクションに以下のコードを記入したボタンを追加することで新しいレコードを作成します。
Patch(テスト,Defaults(テスト), { 人: "B" } )

このようにDefaults関数を使用することでコレクションの規定値を追加することが出来ます。今回は規定値を設定していないので”人”列以外は空白が入力されました。
使用例
以下のように記述することで、条件によってデータソースに値を登録するか、値を変更するかを簡単でわかりやすく書くことができます。
Patch(
[データソース],
If(
[新規登録の場合にtrueになるような条件],
Defaults([データソース]),
[更新するレコード]
),
//更新する値を以下の形式で入力
{列名1:"値1", 列名2:値2}
)
Collect関数とUpdateIf関数を条件分岐させても同様の処理が可能ですが、こちらの記述の方がより簡潔です。
コントロールを増やしたくない場合はこちらの方法が有効ですが、データの新規作成・更新には編集フォームが簡単です。

【Power Apps】データをコピーする方法2選+複数回コピーの方法
SharePointやDataverseでデータをコピーする方法を2つ紹介します。また、ForAll関数で複数回コピーしつつ特定の列のみ異なる値を追加する方法についても紹介します。Form.Updat...
コメント