キャンバスアプリ フォーム Updatesプロパティ(確認用フォームを作成)

はじめに

キャンバスアプリのフォームには便利なプロパティが色々とあります。
以下作成したサンプルアプリをベースにプロパティごとに概要や使い方をご紹介しようと思います。
前回はValidプロパティをご紹介しました。
今回はUpdatesプロパティについて、確認用フォームを作る方法やその他利用ケースについてご紹介します。

フォームのプロパティ:Updates

Updatesプロパティについては以下公式の記載通りです。
要するにフォーム上で更新された最新の値を保持しています。これをSubmitFormしている感じですね。
この値を使ってPatchでそのまま使ったりすることも出来ます。
公式:Power Apps での 編集フォーム および 表示フォーム のコントロール – Power Apps | Microsoft Learn

Updates – フォーム コントロールに読み込まれているレコードに対してデータ ソースに書き戻す値。

  • このプロパティは 編集フォーム コントロールのみに適用されます。
  • このプロパティを使用して、コントロール内のカードからフィールド値を抽出します。 その後、これらの値を使用して、Patch 関数の呼び出し、または接続によって公開されている別のメソッドによってデータ ソースを手動で更新できます。 SubmitForm 関数を使用している場合、このプロパティを使用する必要はありません。
  • このプロパティは、値のレコードを返します。 たとえば、名前および数量フィールドのカード コントロールがフォーム コントロールに含まれており、それらのカードの Update プロパティの値がそれぞれ “ウィジェット” および 10 を返す場合、フォーム コントロールのUpdatesプロパティは { 名前: “ウィジェット”、数量: 10 } を返します。

NOTEこれらのプロパティは編集フォームにのみ存在します。
閲覧フォームの場合は表示のみなので更新関連のプロパティは存在しません。

サンプル動画

サンプルではValidプロパティのほか、タブリストで表示切替え、下書き・本番モード切替え、Updatesプロパティを使って確認フォームを作るサンプルとなっています。

Upadtesプロパティの中身

以下はサンプルのフォームの中身です。
Form1.Updatesで数式バーから見てみるとフォーム上の値が取れているのがわかりますね。
※日本語がエンコードされた列名になっているので分かりずらいですが💦

最新のフォーム上の情報が取得できる

以下の通り、フォーム上で編集した場合は編集後の値が取れます。

NOTEFormsのItemに指定したギャラリーのSelectedだったり、変数に入れたレコード値だったりは
指定した状態の値なのでフォーム上での更新が反映されたりはしていません。
更新後の値を使う場合は、このフォームのUpdatesプロパティや各コントロールの値を参照する必要があります。

Updatesプロパティを使って確認用フォームを作る!

よく利用されるケースとしては、別のフォームに表示する場合です。
フォームで入力した内容(特に複数ページに分かれる場合など)を更新する前に「この内容でまちがいないですか?」の確認を行う画面などですね。

編集用フォームのUpdatesプロパティを確認用フォームのItemに指定するだけで作れます。

以下サンプルの場合、3ページに分かれて入力しています。これは1フォームを表示切替えしています。
入力内容が多い場合は特に最終的に再確認する画面があると便利ですよね。

閲覧用フォームで最終確認

以下のように最終確認するためのフォームを別途作成しています。注文アプリなどだとよくありますよね。
最終的に入力内容をスクロールなどで確認して問題なければ更新する。ミスがあれば戻って再編集する感じです。

更新する前に確認用フォームで内容確認する

実装概要

細かい部分はお好みなので割愛しますが、今回はコンテナーを使ってダイアログ風に真ん中に確認用フォームを出してます。
フォームは閲覧フォームを使っています。1行レイアウトで表示してスクロールで1画面で見れる感じです。
表示項目や並び順などは合わせる感じで作ればいいですね。

閲覧用フォームのItemにFormのUpdatesを指定のみ

このFormのItemにForm名.Updates を指定すれば完了です。

これで編集用フォームの入力内容が反映されます。

間違った場合はキャンセルで戻り、編集して再度開くと、ちゃんと最新の内容が反映されています。

UpdatesプロパティでPatchも使える

Patch関数ではだいたいレコード形式の内容を書きますが、このUpdatesプロパティを指定すれば
SubmitForm同様にPatchで更新も出来ます。

ただ普通はSubmitFormを使えば、エラーチェックも事前にしてくれますので、わざわざそうする必要性はありませんが、以下のような場合にはこういった方法が使えますね。

・以前作成したようなコピー作成機能を実装する場合(Patchで内容を複製して新規作成)
 参考:【ワンランク上のPower Apps】 Tips – コピー機能の作り方 #PowerApps – Qiita

・同じ構成の別リストへ複製を作成する場合(この場合はもう少し調整必要かも?)

・1リストに対して複数フォームに分割していてそれらをPatchで1レコードとして更新する
 →以下結構前に自社ブログで実装した際の例です。レイアウトのために複数フォームに分割して、それらをPatchを使って更新しています。
【ワンランク上のPower Apps 開発】人材スキル管理アプリを作成・運用・改修 | 株式会社エヌサーフ (nsurf.co.jp)

数式内で使用するケースでは多用しないようがよさげ

上記のように使うケースだと問題なさそうですが、公式のパフォーマンス向上についての記述には
ルールや数式内での利用は推奨されていません。
※列の値で計算式を書いている場合などは直接コントロールを参照するようにという感じかと思います。

ヒントとベスト プラクティスを使用して、キャンバス アプリのパフォーマンスを向上させる – Power Apps | Microsoft Learn

おわりに

今回はUpdatesプロパティを紹介しました。フォームの更新内容をさっと取得する便利なプロパティですね。
確認用フォームを作るなどの特定のケースで使い道がありますので覚えておいて損はないです。

次回はサンプルであわせて実装している、タブリスト切替えの部分や下書き、本番モード切替え(項目の必須を切り替える実装)などについて掲載していこうと思います。それでは!

関連記事

フォームの便利なプロパティ:Valid

キャンバスアプリ フォーム 下書き・本番モードの実装サンプル

キャンバスアプリ タブリストで表示項目切替え

フォームのレイアウトサンプル:レイアウトの基本を載せてます。

フォーム関連:

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS