別のテーブルのメイン フォームから直接関連テーブル レコードを編集する

PowerApp 内のテーブル フォームで関連するテーブル レコードを操作する方法は複数あります。 たとえば、簡易表示フォームを使用して読み取り専用モードで関連テーブルを含め、ダイアログのメイン フォームを使用してレコードを作成、編集できます。

関連するテーブル レコードを操作するもう 1 つの方法は、フォーム コンポーネント コントロールを別のテーブルのメインフォームに追加することです。 フォーム コンポーネント コントロールを使用すると、ユーザーは関連するテーブル レコードの情報を別のテーブルのフォームから直接編集できます。

たとえば、メイン アカウント フォームの別のタブにあるフォーム コンポーネントを次に示します。これにより、ユーザーはアカウント フォームを離れることなく連絡先レコードを編集できます。

別のタブに追加されたフォーム コンポーネント コントロール。

たとえば、メインの取引先企業フォームの 既存のタブ にフォーム コンポーネントを配置し、取引先企業フォームの 概要 タブから離れることなく取引先担当者レコードを編集できるようにしています。

既存のタブに追加されたフォーム コンポーネント コントロール。

フォーム コンポーネントをテーブルのメイン フォームに追加します

この例では、取引先担当者 の標準のメイン フォームは、アカウントのメイン フォームに追加されるフォーム コンポーネント コントロール用に構成されています。

  1. Power Apps にサインインします。

  2. Dataverse を選択し、左ペインの テーブル を選択します。 または、メニューから ソリューションを選択し、アカウント などのテーブルを選択します。

  3. コンポーネント メニューから フォーム を選択します。

  4. 用意されているフォームの中から、フォーム タイプが メイン のフォームを選択します。

  5. クラシックに切り替え を選択します。 従来のフォーム エディターインターフェイスは、ブラウザのタブとして開きます。

  6. 挿入 タブを選択します。次に、新しいタブを作成して新しいセクションを追加するか、既存のタブに新しいセクションを追加します。

  7. 新規セクションで、取引先責任者 ルックアップ列のようなルックアップ列を追加します。

  8. ルックアップ列を選択して、ホーム タブで、プロパティの変更 を選択します。

  9. コントロール タブで、コントロールの追加 を選択し、コントロール タイプのリストで フォーム コンポーネントのコントロール を選択して、次に 追加 を選択します。

    フォーム コンポーネント コントロールを選択する。

  10. コンポーネントの Webタブレット電話 を選択します。

  11. 編集 (鉛筆アイコン) と プロパティの構成 ダイアログ ボックスを選択して、静的な値にバインドする を選択して、次に TableName がテーブルの一意の名前であり、FormID がメイン フォーム <QuickForms><QuickFormIds><QuickFormId entityname="TableName">FormID</QuickFormId></QuickFormIds></QuickForms> のフォーム ID であるこれと類似した XML エントリーを追加します。

    • たとえば、取引先企業フォーム上で 取引先連絡先 メイン フォームをレンダリングするには、<QuickForms><QuickFormIds><QuickFormId entityname="contact">1fed44d1-ae68-4a41-bd2b-f13acac4acfa</QuickFormId></QuickFormIds></QuickForms> を使用します

     フォーム コンポーネント コントロールを構成する。

  12. OK を選択し、次に、もう一度 OK を選択します。

  13. フォームを 保存 して、公開 します。

ヒント

テーブルの一意の名前を見つけるには、Power Apps でテーブルを選択し、次に 設定 を選択します。 編集 テーブル ペイン上に 名前 が表示されます。 フォーム ID は、フォームを編集するときにブラウザの URL に表示されます。 ID は URL の /編集/ に従います。 フォーム ID は、最新のフォーム デザイナーでフォームを開くときにブラウザーの URL に表示されます。

従来のフォーム デザイナーでは、フォーム ID は、URL の formId%3d 部分に従います。

フォーム コンポーネントの動作

このセクションでは、モデル駆動型アプリで使用した場合のフォーム コンポーネントの動作について説明します。

レコードの選択

フォーム コンポーネント コントロールがフォームを表示するには、バインドされているルックアップ列に値が必要です。 それ以外の場合、コントロールはメッセージ ソースレコードが選択されていません を表示します。 値を設定する 1 つの方法は、フォーム コンポーネント コントロールと同じルックアップ列にバインドされているルックアップ コントロールをフォームに追加することです。 ルックアップ コントロールを使用してルックアップ列の値を変更すると、フォーム コンポーネント コントロールは、新しいルックアップ列の値のデータを含むフォームを表示します。

列の検証

データを送信するには、メイン フォームとフォーム コンポーネント コントロールの両方で、Microsoft Dataverse に送信するデータに対して有効である必要があります。 これは、列検証エラー、必要な列の欠落などの両方に当てはまります。

OnSave ハンドラーは、メイン フォームとそのフォーム コンポーネント コントロールに対して実行されます。 どのハンドラーも、PreventDefaultDefault を使用してメイン フォームとフォーム コンポーネント コントロールの保存をキャンセルできます。 これは、保存操作は Dataverse に送信されるデータの preventDefault を呼び出すことができないことを意味します。 OnSave ハンドラーが呼び出される時の順序は定義されていません。 詳細情報: フォーム OnSave イベント (モデル駆動型アプリのクライアント API 参照)

レコードを保存する

検証ステージをパスすると、各レコードに対して、データは Dataverse に送られます。 現在、各レコードは異なるリクエストで個別に更新されています。 保存はトランザクションではなく、保存の順序は定義されていません。 1 つのフォーム コンポーネントを保存するときにエラーが発生しても、メイン フォームや他のフォーム コンポーネントへの変更はロールバックされません。 各保存が完了すると、フォーム上のすべてのレコードのデータが更新されます。

通知

フォーム コンポーネントの通知は、メイン フォームの通知に集約されます。 たとえば、フォーム コンポーネントに無効な列があり、保存しようとすると、無効な列の通知がフォーム コンポーネントではなく、メイン フォームの上部に表示されます。

エラー処理

保存中に複数のエラーが発生した場合、ユーザーには 1 つのエラーのみが表示されます。 ユーザーが変更を加えて最初のエラーを修正し、保存すると、次のエラーが表示されます。 ユーザーは、すべてのエラーが解決されるまで保存を続ける必要があります。

保存されていない変更でレコードを変更する

フォーム コンポーネントのフォームに未保存の変更があり、ユーザーがフォーム コンポーネントがバインドされているルックアップ列を変更しようとすると、ユーザーはこの変更について警告されます。

クライアント API

フォーム コンテキスト はフォーム コンポーネント コントロールに使用できます。 これは、getControl のような API を介してコントロールにアクセスすることにより、メインフォームのフォーム コンテキストを介してアクセスできます。 フォーム コンポーネント コントロールの関連テーブルのデータにアクセスする前に、イベント ハンドラーは isLoaded API コントロールが true を返すようにします。

制限

フォーム コンポーネント コントロールをテーブル フォームに追加するときは、次の制限に注意してください。

  • フォーム コンポーネント コントロールは、メイン フォームのレンダリングのみをサポートします。 同様に、フォーム コンポーネント コントロールの追加のサポートは、メインフォームでのみサポートされます。 クイック作成、クイックビュー、カードなどの他のフォームタイプはサポートされていません。

  • ビジネス プロセス フローを持つフォームは、現在、メイン テーブル フォームや関連テーブル フォームのいずれにも対応していません。 ビジネス プロセス フローのあるフォームがある場合、予期しない動作が発生する可能性があります。 ビジネス プロセス フローを使用するフォームでフォーム コンポーネントを使用しないことをお勧めします。

  • フォーム コンポーネント コントロールは、フォーム コンポーネント コントロールによって使用されるフォームにフォーム コンポーネント コントロールを追加するなどの、埋め込みフォーム コンポーネント コントロールはサポートしていません。

  • フォーム コンポーネント コントロールは、フォームに複数のタブが含まれている場合にのみ、使用するフォームの最初のタブを表示します。

  • 単一のフォームで異なるフォーム コンポーネント コントロールに同じフォームを使用することは、サポートされていません。

  • フォーム コンポーネントで使用するフォームは、アプリに含まれている必要があります。 そうでない場合、または現在のユーザーがフォームにアクセスできない場合は、アプリに含まれ、ユーザーが利用できる最上位のメインフォームにフォールバックします (フォームの順序に基づいて)。 詳細: コンポーネントを追加する

  • フォーム コンポーネントでタイムライン ウォールの設定に使用される列が変更された場合、タイムライン ウォールが更新されない場合があります。 ページが更新されると、タイムライン ウォールが期待どおりに更新されます。

  • モバイルでは、現在タイムライン コントロールはフォーム コンポーネント コントロールには表示されません。

  • サブグリッドの場合、すべてのレコードを見る関連するレコードを見る コマンドボタンは、フォーム コンポーネント内にレンダリングされている場合は使用できません。

  • フォーム コンポーネント コントロールは、一括編集ダイアログではサポートされていません。 デフォルトではこれらは一括編集ダイアログのフォームに表示されず、関連するテーブルレコードに加えられた変更は保存されません。

関連項目

モデル駆動型アプリのデータのビジュアル化のためのカスタム コントロールの使用

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。