今回はPower Appsで転記する方法について紹介します。
1つのアプリに2つ以上のフォームがある場合などに、アプリユーザーにとってとても便利な機能です。
では、利用ケースを紹介した後、実装方法について紹介します。
利用ケース
今回紹介するケースは、1つのアプリに2つのフォームがあるアプリです。
1つのフォームに1つのギャラリーが紐づいているように設定してます。
ギャラリー画面から新規登録ボタン、または、既存レコードから紐づいたフォームの画面に遷移します。
上の画像はギャラリー1とフォーム1の場合ですが、ギャラリー2とフォーム2の場合も同様です。
基本的に紐づいたギャラリーとフォーム同士の画面遷移はしますが、紐づいていないギャラリーとフォームの画面遷移はしません。
ギャラリー1からフォーム1、ギャラリー2からフォーム2への移動はしますが、ギャラリー1からフォーム2への移動、ギャラリー2からフォーム1への移動はしません。
また、フォーム1とフォーム2は共通項目がありますが、データは独立しています。
そのため、ギャラリー1のデータを流用してギャラリー2に新規項目の作成をすることはできません。
しかし、異なるフォームに共通項目があった場合、ユーザーの入力項目数を減らしたいといった事があると思います。
今回の例ですと、「日付」や「画像」や「自己紹介」などといった項目です。
この要望を転記という方法で実装してみたいと思います。
実装方法
やり方は複数ありますが、今回はコレクションを用いた転記の方法を紹介します。
コレクションとは、ユーザーが操作しているPower Appsアプリ内でのみ、データを格納できる場所です。
このコレクションを用いて、ギャラリー1の情報をフォーム2に反映させることを目指します。
そのためにやることは以下の3点です。
- ギャラリー1の各レコードの情報をコレクションに格納すること
- ギャラリー1からフォーム2へ画面遷移すること
- フォーム2にコレクションに格納したデータを表示させること
コレクションの作成
コレクションの作成は、転記ボタンを押した時にそのレコードの情報を格納する方針で作業します。
初めに、ギャラリーの配下にボタンを配置します。
※Galleryコントロールの配下にボタンを配置すると、各レコードにボタンが配置されます。
転記ボタンのOnSelectプロパティに以下の式をClearCollect関数を用いて、コレクションを作成します。
※Collect関数でもコレクションは作成されますが、実装の都合上、毎回1行のコレクションを作成するためにClearCollect関数を使用しています。
式を入力できたら、実際に転記ボタンを押して、コレクションにレコードの情報が格納されるか確認しましょう。
※列2には日付が入っています。コレクションの表記上、数字が不規則に並んでいるように見えますが、問題ありません。
ギャラリー1からフォーム2への画面遷移
画面遷移はNavigate関数で実装可能です。
今回は転記ボタンを押したら、画面遷移するようにしたいので、先ほどClearCollect関数を記載した続きにNavigate関数を記載して、画面遷移を実装します。
式を入力できたら、実際に転記ボタンを押して、画面遷移するか確認しましょう。
コレクションに格納したデータをフォームで表示
最後にコレクションに格納した値をフォームに反映させます。
コレクションのどの列の値を、フォームのどの項目に反映させるか、指定する必要があります。
例えば、タイトルにはコレクションの列1の値を表示させたい場合、表示させたい箇所のDefaultプロパティを編集します。
ここで注意しないといけないのは、First関数を利用することです。
今回、作成しているコレクションは1行なので、コレクション名.列名をDefaultプロパティに設定することで任意の値を表示させることができるように思えます。
しかし、コレクションは必ずしも1行であるわけではないので、コレクション名.列名と記述しても、何行目の値を参照すればいいのか判別できません。
そのため、First関数を用いてコレクションの1行目の任意の列名の値を参照するといった指定をすることで正しい値を転記することが可能です。
全ての共通項目に設定完了したら、実際に動作するか確認しましょう。
以上で転記の実装は完了です。
さいごに
今回はPower Appsで転記を実装する方法について紹介しました。
今回はコレクションを利用して転記しましたが、変数を使って転記する方法もあります。
1つの機能を実装しようとした時に複数の方法があることはよくあることです。
実装したい機能だけでなく、アプリ全体のことを考えて、どの方法で実装することが一番最適なのか考える必要があります。
Power Appsアプリで転記を実装したい方の参考となれば嬉しいです。