【Power Apps】複数スクリーン(画面)のフォームを作成する場合

フォームの項目が1つの画面に多いとたくさんの情報量になり、可読性が落ちたりするので、できれば画面を複数に分けたい場合があるかと思います。

項目が多い場合、フォームにスクロールバーが付くのでそれでも問題はないのですが、ユーザー的にも使いやすく、情報がすっきりして見えるため、複数の画面のフォームを作成する際の注意点をまとめてみます。

複数スクリーンのフォームを作成する

下記のテーブルを使用して、複数スクリーンを持つ予約フォームを作成していきます。

スクリーンには下記のように配置します。

Screenの作成

フォームを複数作成する場合は、空のページに[挿入]から[フォーム]→[編集]でフォームを追加し、データソースにはフォームを使用してデータ追加を行いたいデータソースを選択し、[フィールドの編集]で1画面に追加したいフィールドだけ追加してください。

2画面目以降は1スクリーン目をコピーしてフィールドの編集を行い、2スクリーンに表示したいフィールドを追加してください。

注意
※フォームの編集で追加した場合、プレビューにすると、フォームが表示されないです。
フォームを選択した状態で、プロパティウィンドウの[プロパティ]にある[規定モード]を編集から新規に変更してください。

SubmitForm関数を使うと…

フォームの場合、データソースにデータを書き込む際にSubmitForm関数が利用できます。

複数画面の場合、1スクリーン目から次のスクリーンに行くときにSubmifForm関数を使用すると1スクリーン目のデータをデータソースに登録し、2スクリーン目で入力をやめてしまった場合、中途半端なデータが残ってしまうことになります。

(この場合もやり方としては問題ないと思いますが、ステータス欄を設けて中途半端なデータだとわかるようにする必要があります。また中途半端なデータはPower Automate手作業で定期的に削除する作業が必要になると思います。)

今回はこの中途半端なデータを残さず、一度にデータを登録したいため、Patch関数を使用します。

Patch関数を使用して一括登録

Patch関数は、データソースに新規登録や変更登録を行うことができます。
しかしPatch関数には、入力値を検証してくれるValidate関数のような機能はありません。

参考 Power Apps の Patch 関数Docs

そのため、自分でデータの検証を行う必要がありますが、フォームが新規モードまたは編集モードの場合、フォームに入力されたデータを SharePoint リストに書き戻すことができるか検証する機能(Validate機能)があるため、これを利用してデータの検証を行います。

参考 Power Apps で関数を検証するDocs

Validate機能を使用して、入力値がルールを見直していなかったらボタンの表示が有効にならないように設定します。

NextボタンのDisplayModeプロパティに下記のように設定します。

Apps
If(Form2.Valid,DisplayMode.Edit,DisplayMode.Disabled)

これはForm2の入力がルールに従ってない場合には、ボタンを有効にしないよう設定しています。そのため、入力漏れやデータ型の異なるデータを登録できないようにすることが可能になるため、SubmitForm関数を使用しなくても入力チェックが可能になります。

SharePointリストを使用した場合は、データ型データの必須を列を作成する時に決めることができますが、Excelのテーブルを使用した場合、データが必須かどうかの設定はExcel側ではできないため、手動で必須に変更してこの機能を使用します。

データカードを選択すると、右側のプロパティウィンドウの詳細設定に[Required]という項目があります。テーブルデータを使用した場合、ここはDefaultではfalseになっていますが、これをTrueに変更すれば、この項目が必須項目になりますので、空白のまま登録することができなくなります。

Patch関数でデータソースに登録

最後の登録ボタンにPatch関数を使用します。

Apps
Patch(テーブル1,Defaults(テーブル1),Form1.Updates,Form2.Updates,Form3.Updates)

このように書くことでデータソースの新規のレコードにForm1の値、Form2の値、Form3の値が一括で登録できます。

【Power Apps】複数の画面(スクリーン)を持つフォームの作成 Part2

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA