演習 - Dataverse リレーショナル データを操作する

完了

Contoso 社では、多くの企業と同様に複数の場所があり、従業員の自宅勤務を認めています。 場合によっては、従業員は出勤する必要があり、出勤時に使用するデスクが必要です。 以前、Contoso は従業員に対し、出勤時には使用可能なデスクをオフィスで探すよう指示しました。 その後、このタイプの共有ワークスペース システム (ホット デスキング) が IT サポートとライセンスに対する課題を生み出していることを発見しました。 その結果、Contoso は最近、従業員が使用可能なデスクを表示して、事前に予約できる Microsoft Power Platform ソリューションを構築しました。

この演習では、Power Apps からキャンバス アプリを強化します。

目標

この演習の目的は、次のリレーションシップの作業方法を学習することです。

  • 一対多と多対一

  • 多対多

前提条件

この演習を完了するには、Microsoft Dataverse を備えた環境が必要です。

演習 1: ソリューションをインポートする

この演習では、開始ソリューションをテスト環境にインポートしてから、Microsoft Power Automate クラウド フローを使用してサンプル データを読み込む必要があります。 このソリューションには、5 つのテーブル、1 つのキャンバス アプリケーション、1 つのモデル駆動型アプリケーション、および 1 つのクラウド フローが含まれています。

タスク 1: 開始ソリューションをインポートする

このタスクでは、ソリューションを環境にインポートします。

  1. この演習を完了するには、ZIP ファイルをダウンロードする必要があります。 リンクが表示されたら、[ダウンロード] を選択します。

  2. Power Apps Maker Portal に移動して、このラボで使用する環境を選択します。

  3. ソリューション > ソリューションのインポート を選択します。

  4. 参照 を選択します。

  5. ContosoHotDesking_1_0_0_0.zip ソリューションを選択し、開くを選択します。

  6. 次へを選択します。

  7. 次へ を再度選択します。

  8. 接続の選択 ドロップダウン リストで、資格情報が既に提供されている場合は インポート を選択してタスク 2 に進みます。 それ以外の場合は、+ 新しい接続 を選択します。

  9. 作成を選択します。

  10. 資格情報を入力します。

  11. 接続のブラウザー ウィンドウまたはタブを閉じます。

  12. 最新の情報に更新を選択します。

  13. インポート を選択して、ソリューションのインポートが完了するのを待ちます。

タスク 2: サンプル データの読み込み

このタスクでは、サンプル データを作成するクラウド フローを実行します。

  1. ソリューション を選択し、インポートした Contoso ホット デスク ソリューションを開きます。

  2. クラウド フローを選択し、Load Sample Hot Desk Data フローを開きます。

  3. フローが開いたら、コマンド バーから 実行 を選択します。

  4. ダイアログ ボックスの下部から フローの実行 を選択します。

  5. 完了 を選択し、フローの実行が完了するのを待ちます。 最新の情報に更新 ボタンを選択して、フロー実行のステータスを表示します。 フロー実行が完了すると、成功ステータスが表示されます。

タスク3: アプリの実行

このタスクでは、Hot Desking ManagerHot Desking アプリケーションを実行して、これらに慣れます。 その後、データの設定を完了します。

  1. ソリューションに戻るか、Power Apps Maker Portal に移動し、このラボに使用している環境とソリューションを選択します。

  2. アプリを選択し、Hot Desking Manager アプリケーションを選択して起動します。

  3. デスク ビューを選択して、サンプル データがあることを確認します。

  4. 場所ビューを選択して、サンプル データがあることを確認します。

  5. デスク機能ビューを選択して、サンプル データがあることを確認します。

  6. 場所を選択し、3 つの場所を選択してから、編集を選択します。

  7. Primary Contact フィールドでユーザーを選択し、保存 を選択します。

  8. 戻る を選択して Hot Desking Manager アプリケーションを閉じます。

  9. アプリがまだ選択されていることを確認して、Hot Desking アプリケーションを選択し、編集 を選択します。 アプリケーションが make.powerapps.com で開きます。

  10. HomeScreen を選択し、再生 を選択します。

  11. 新しい予約 ボタンを選択します。

  12. ビル 1囲まれたオフィス、およびデスク 1 を選択します。

  13. 未来の日付を選択し、9:00予約を選択します。

  14. 新しい予約を再び選択します。

  15. Building 2Teams Room、およびDesk # 2 を選択します。

  16. 未来の日付を選択し、13:00予約を選択します。

  17. 別の組み合わせで、さらに数件の予約を追加します。

  18. 少なくとも 4 つの予約が必要です。 右上にある X を選択して、プレビューを閉じます。

  19. ReserveDeskScreen ドロップダウン リストを展開し、Gallery3 を展開して、Button1 を選択します。

  20. 数式バーに移動し、OnSelect の式を確認します。 ユーザーが予約オプションを選択 すると、Patch() 関数が使用されて、新しい予約行が作成されます。 この新しい行には、デスクとユーザーとのリレーションシップがあります。 ユーザー リレーションシップは、開始時にアプリで設定されるグローバル変数から設定されます。

  21. アプリケーションのその他の式を確認して、プロセスの動作をよく理解してください。

  22. 式の確認が完了したら、戻る ボタンを選択します。

  23. このページから移動しないでください。

演習 2: リレーションシップを作成する

この演習では、お気に入りのデスクのリレーションシップを作成します。 このリレーションシップは、User テーブルと Desk テーブル間の多対多のリレーションシップです。 このリレーションシップにより、ユーザーがデスクをお気に入りとしてタグ付けできる機能を実装できます。

タスク: リレーションシップを作成する

このタスクでは、お気に入りのデスクのリレーションシップを作成します。

  1. テーブルを選択します。

  2. デスク テーブルを選択します。

  3. スキーマ ウィンドウからリレーションシップ オプションを選択します。 + 新しいリレーションシップを選択し、多対多を選択します。

  4. 関連する (多数の) テーブルとしてユーザーを検索/選択して、完了を選択します。

  5. 左上の 戻る を選択します。

  6. 左側のメニューから オブジェクト または 概要 を選択することによりソリューションに戻った後、コマンド バーから すべてのカスタマイズの公開 を選択します。

  7. 公開プロセスが完了するまで待ちます。

演習 3: 予約表示に情報を追加する

この演習では、すべての予約を表示するのではなく、現在のユーザーによって作成された予約を表示するように、予約ギャラリーを変更します。 さらに、予約リストに詳細情報を表示します。

タスク: アプリケーションを編集する

このタスクでは、Contoso 製品マネージャー アプリケーションを編集します。

  1. Power Apps Maker Portal に移動して、このラボで使用している環境とソリューションに戻ります。

  2. アプリ を選択し、Hot Desking アプリケーションを選択して、編集モードで開きます。

  3. HomeScreen を展開し、Gallery5 を選択します。

  4. 式バーに移動し、Items 式を次の式に変更します。 この式は、現在のユーザーに関連付けられている予約をフィルターし、ユーザーと予約テーブルの間の一対多のリレーションシップを使用します。

    LookUp(Users,'Primary Email'=currentUserEmail).'Reservations (contoso_Reservation_ReservedFor_SystemUser)'

  5. [ギャラリーの編集] アイコンを選択します。

  6. 挿入 ドロップダウンに移動して テキスト ラベル を選択します。

  7. 次に、Text 値を以下の式に変更します。 この式は、予約テーブルとデスク テーブルの間の一対多のリレーションシップを使用します。

    ThisItem.Desk.Name

  8. ラベルのサイズと位置を変更します。

  9. 編集モードの間に、別のラベルの追加を選択します。

  10. 追加したラベルを選択し、Text 値を次の式に設定します。 次の式は、予約から始めて 2 レベルの深さのリレーションシップを使用し、デスクを使用して場所を取得することを示しています。

    ThisItem.Desk.Location.Phone

  11. ラベルのサイズと位置を変更します。

  12. 編集モードの間に、ラベルをもう一度選択します。

  13. 追加したラベルを選択し、Text 値を次の式に設定します。

    If(IsBlank(ThisItem.Desk.Location.'Primary Contact'),"No Primary Contact",ThisItem.Desk.Location.'Primary Contact'.'Full Name')

  14. ラベルのサイズと位置を変更します。

    予約ギャラリーは、次の図のようになります。

  15. 保存 を選択します。

  16. 次の演習のためにアプリ編集画面に残ります。

演習 4: お気に入りのデスクを追加する

この演習では、ユーザーがお気に入りのデスクを選択できるアイコンを追加します。 また、デスク機能を表示するラベルを追加します。

タスク: お気に入りを追加する

このタスクでは、お気に入りのデスクを追加し、デスク機能を表示するラベルを追加します。

  1. FindDeskScreen を展開して、GalleryDesks を選択します。

  2. ギャラリーの 編集 アイコンを選択します。

  3. 挿入 タブに移動して、アイコン を選択し、アイコンの 1 つを選択します。 式を使用して、次のステップで特定のアイコンを設定します。 したがって、このステップでは、どのアイコンを選んでもかまいません。

  4. 追加したアイコンを選択し、Icon 値を次の式に変更します。 この式は、ユーザーがこのデスクをお気に入りとして指定しなかった場合は、サムズアップ アイコンを塗りつぶして表示し、または、ユーザーが既にデスクをお気に入りとして選択していた場合は、サムズアップ アイコンを表示します。

    `If(CountIf(ThisItem.Users, ThisRecord.User = currentUser.User) > 0, Icon.ThumbsUp,Icon.ThumbsUpFilled)`
    
    > [!NOTE]
    > The CountIf encounters a [delegation](/power-apps/maker/canvas-apps/delegation-overview/?azure-portal=true) issue. If you have a large number of rows in your app, you might have to use an alternate approach.
    
  5. アイコンが選択されていることを確認します。 OnSelect を選択し、次の式を貼り付けます。 この式は、ユーザーがすでにデスクをお気に入りとして追加したかどうかに応じて、このデスクとサインインしたユーザーを関連付けるか、関連付けを解除します。

    If(CountIf(ThisItem.Users, ThisRecord.User = currentUser.User) > 0, Unrelate(ThisItem.Users, currentUser), Relate(ThisItem.Users, currentUser))

  6. 次の図に示すように、ギャラリー内のアイコンを再配置します。

  7. ギャラリー編集モードであることを確認します。 挿入 タブに移動して Text ラベル を選択します。

  8. 追加したラベルを選択し、Text 値を次の式に設定します。 この式は、デスク機能名を連携し、Desk テーブルと Desk Features テーブルの間の多対多のリレーションシップを使用します。

    Concat(ThisItem.'Desk Features', Name, " , " )

  9. ラベルのサイズと位置をスペースに合わせて変更します。

  10. アプリを保存します。

  11. 再生 を選択して、アプリをプレビューします。

  12. ギャラリーは次の図のようになります。 デスクの 1 つのサムズアップ アイコンを選択します。

  13. アイコンはサムズアップに変わるはずです。 アイコンを再び選択します。

  14. アイコンは、塗りつぶされた サムズアップ アイコンに戻ります。 アイコンを再び選択します。

  15. プレビューを閉じます。

  16. このページから移動しないでください。

演習 5: デスクのフィルター

この演習では、ユーザーがドロップダウン リストから機能を選択した場合に、デスク ギャラリーにフィルターを追加します。

タスク: 機能のフィルター

このタスクでは、機能のフィルターを追加します。

  1. GalleryDesks を選択します。

  2. 数式バーに移動し、Items の式を変更します。 この式は、デスクをフィルターして、選択された機能を持つデスクだけを表示します。

    Filter(Desks,Location.Location = FilterLocation.Selected.Location,IsBlank(filterFeatures.Selected) || Desk in filterFeatures.Selected.Desks.Desk)

  3. 必要に応じて変更を保存します。

  4. 再生 を選択して、アプリをプレビューします。

  5. 選択した建物で使用できるデスク機能に注目します。

  6. ドロップダウン リストから機能を選択します。 選択した機能を持つデスクだげが表示されます。

  7. 別の建物と機能を選択して、アプリケーションが予期したとおりに動作することを確認します。

  8. プレビューを閉じます。

  9. アプリ デザイナーを閉じます。