🎃

Power Apps モデル駆動型アプリのフォームコンポーネントコントロールをモダンなスタジオで使う

2022/09/21に公開

2022/10/30 追記
画面は違うけど、フォームというコンポーネントとしてデフォルトで表示されるようになってめっちゃ簡単になったのでその利用方法を追加


モデル駆動型アプリのフォームでは、その他のコンポーネントというコンポーネントの分類があって、いろいろコンポーネントを追加することができます。
その中でフォームコンポーネントコントロールという、フォームに別のフォームを埋め込むことができるコンポーネントが使い方がわかりにくいので記事にしておきます。

これを使ってフォームを埋め込むことで、リレーションシップが定義されている2つのテーブルの対象となるレコードを一画面で同時に表示、入力、更新することができるようになります。

以下はサンプルとして、Outlook と連携しているためカスタマイズしたくない予定のフォームを、自身で作成したカスタムテーブルである営業報告のフォームに埋め込んでみたいと思います。

手順 (デフォルトで表示されるフォームを利用)

1.リレーションの"N"となる画面のフォームでフォームコンポーネントコントロールを設定

  • 埋め込むフォームの編集画面を表示

  • 表示や入力から、フォームを選択

  • 対象のテーブル間のリレーションシップを定義した Lookup 列と、使用するフォームを設定

あとは公開すれば設定は完了です。

手順 (その他のコンポーネントで追加したコンポーネントを利用)

1.リレーションの"1"となる画面のフォームの ID をメモ

  • 埋め込まれるフォーム(今回は予定)の編集画面を表示

  • URLが以下のような構成になっているので、edit/と?sourceの間の値のフォームの ID をメモ
    https://make.powerapps.com/e/xxxxx/s/xxxxx/entity/appointment/form/edit/549a8aa3-c349-4ab9-8bac-4873fa9a7a5c?source=xxxxx

2.リレーションの"N"となる画面のフォームでフォームコンポーネントコントロールを設定

  • 埋め込むフォーム(今回は営業報告というカスタムテーブル)の編集画面を表示

  • フォームコンポーネントコントロールを初めて使う場合は、コンポーネントをさらに取得からフォームコンポーネントコントロールを追加

  • その他のコンポーネントからフォームコンポーネントコントロールを選択

  • 対象のテーブル間のリレーションシップを定義した Lookup 列と、先ほどメモしたフォームの ID を設定

あとは公開すれば設定は完了です。

設定結果の確認

Lookup 列が設定されるまでは、以下のような見た目

設定されると、フォームコンポーネントコントロールを設置した場所に、設定した ID のフォームが表示され、表示も入力も更新も同時に行える

参考(クラシックでの設定方法のみ)

https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/form-component-control

モデル駆動型アプリの開発をしていると、同じテーブルにはしたくない、できないけど、1対1の関係になるってこと結構あると思います。
そんな時、2つのテーブルのレコードをさも1つのレコードのように見せかけてくれる便利なものなので、ぜひ使ってみてください。

Discussion