演習 - Dataverse リレーショナル データを操作する
Contoso 社では、多くの企業と同様に複数の場所があり、従業員の自宅勤務を認めています。 場合によっては、これらの従業員は出勤する必要があり、出勤時に使用するデスクが必要です。 以前、Contoso は従業員に対し、出勤時には使用可能なデスクをオフィスで探すよう指示しました。 その後、このタイプの共有ワークスペース システム (ホット デスキング) が IT サポートとライセンスに対する課題を生み出していることを発見しました。 その結果、Contoso は最近、従業員が使用可能なデスクを表示して、事前に予約できる Microsoft Power Platform ソリューションを構築しました。
この演習では、Power Apps からキャンバス アプリを強化します。
目標
この演習の目的は、次のリレーションシップの作業方法を学習することです。
一対多と多対一
多対多
前提条件
この演習を完了するには、Microsoft Dataverse を備えた環境が必要です。
演習 1: ソリューションをインポートする
この演習では、開始ソリューションをテスト環境にインポートしてから、Microsoft Power Automate クラウド フローを使用してサンプル データを読み込む必要があります。 このソリューションには、5 つのテーブル、1 つのキャンバス アプリケーション、1 つのモデル駆動型アプリケーション、および 1 つのクラウド フローが含まれています。
タスク 1: 開始ソリューションをインポートする
このタスクでは、ソリューションを環境にインポートします。
この演習を完了するには、ZIP ファイルをダウンロードする必要があります。 リンクが表示されたら、[ダウンロード] を選択します。
Power Apps Maker Portal に移動して、このラボで使用する環境を選択します。
ソリューション > ソリューションのインポート を選択します。
参照 を選択します。
ContosoHotDesking_1_0_0_0.zip ソリューションを選択し、開くを選択します。
次へを選択します。
次へを再度選択します。
接続の選択ドロップダウン リストで、+ 新しい接続を選択します。
作成を選択します。
資格情報を入力します。
接続のブラウザー ウィンドウまたはタブを閉じます。
最新の情報に更新を選択します。
インポート を選択して、ソリューションのインポートが完了するのを待ちます。
タスク 2: サンプル データの読み込み
このタスクでは、サンプル データを作成するクラウド フローを実行します。
ソリューション を選択し、インポートした Contoso ホット デスク ソリューションを開きます。
クラウド フローを選択し、サンプルのホット デスク データの読み込みフローを開きます。
実行を選択します。
フローの実行を選択します。
完了を選択し、フローの実行が完了するのを待ちます。 最新の情報に更新ボタンを選択して、フロー実行のステータスを表示します。 フロー実行が完了すると、成功ステータスが表示されます。
タスク3: アプリの実行
このタスクでは、Hot Desking Manager と Hot Desking アプリケーションを実行して、これらに慣れます。 その後、データの設定を完了します。
Power Apps Maker Portal に移動して、このラボで使用している環境を選択します。
アプリを選択し、Hot Desking Manager アプリケーションを起動します。
デスクを選択して、サンプル データがあることを確認します。
場所を選択して、サンプル データがあることを確認します。
デスク機能を選択して、サンプル データがあることを確認します。
場所を選択し、3 つの場所を選択してから、編集を選択します。
主な連絡先フィールドでユーザーを選択し、変更を選択します。
Hot Desking Manager アプリケーションを閉じます。
アプリ がまだ選択されていることを確認して、Hot Desking アプリケーションを選択し、編集 を選択します。 アプリケーションがアプリ スタジオで開きます。
> [!div class="mx-imgBorder"] > [![Screenshot of the Edit button highlighted and the Hot Desking application selected.](../media/edit-application.png)](../media/edit-application.png#lightbox)
HomeScreen を選択し、再生 を選択します。
新しい予約 を選択します。
Building 1、Enclosed Office、およびDesk # 1 を選択します。
未来の日付を選択し、9:00 の 予約を選択します。
新しい予約を再び選択します。
Building 2、Teams Room、およびDesk # 2 を選択します。
未来の日付を選択し、13:00 の 予約を選択します。
別の組み合わせで、さらに数件の予約を追加します。
少なくとも 4 つの予約が必要です。 プレビューを閉じます。
ReserveDeskScreen ドロップダウン リストを展開し、Gallery3 を展開して、Button1 を選択します。
式に移動し OnSelect の式を確認します。 ユーザーが予約オプションを選択 すると、Patch() 関数が使用されて、新しい予約行が作成されます。 この新しい行には、デスクとユーザーとのリレーションシップがあります。 ユーザー リレーションシップは、開始時にアプリで設定されるグローバル変数から設定されます。
アプリケーションのその他の式を確認して、プロセスの動作をよく理解してください。
式の確認が完了したら、戻る ボタンを選択します。
このページから移動しないでください。
演習 2: リレーションシップを作成する
この演習では、お気に入りのデスクのリレーションシップを作成します。 このリレーションシップは、User テーブルと Desk テーブル間の多対多のリレーションシップです。 このリレーションシップにより、ユーザーがデスクをお気に入りとしてタグ付けできる機能を実装できます。
タスク: リレーションシップを作成する
このタスクでは、お気に入りのデスクのリレーションシップを作成します。
テーブル を選択します。
Desk テーブルを検索して選択します。
リレーションシップ オプションを選択して、+ 新しいリレーションシップ をクリックし、多対多 を選択します。
関連する (多数の) テーブルとしてユーザーを選択して、完了を選択します。
テーブルの保存を選択します。
ソリューションを選択し、すべてのカスタマイズの公開を選択します。
公開プロセスが完了するまで待ちます。
演習 3: 予約表示に情報を追加する
この演習では、すべての予約を表示するのではなく、現在のユーザーによって作成された予約を表示するように、予約ギャラリーを変更します。 さらに、予約リストに詳細情報を表示します。
タスク: アプリケーションを編集する
このタスクでは、Contoso 製品マネージャー アプリケーションを編集します。
Power Apps Maker Portal に移動して、このラボで使用している環境を選択します。
アプリ を選択し、Hot Desking アプリケーションを選択して、編集 を選択します。
HomeScreen を展開し、Gallery5 を選択します。
式バーに移動し、Items 式を次の式に変更します。 この式は、現在のユーザーに関連付けられている予約をフィルターし、ユーザーと予約テーブルの間の一対多のリレーションシップを使用します。
LookUp(Users,'Primary Email'=currentUserEmail).'Reservations (contoso_Reservation_ReservedFor_SystemUser)'
[ギャラリーの編集] アイコンを選択します。
挿入 ドロップダウンに移動して テキスト ラベル を選択します。
次に、Text 値を以下の式に変更します。 この式は、予約テーブルとデスク テーブルの間の一対多のリレーションシップを使用します。
ThisItem.Desk.Name
ラベルのサイズと位置を変更します。
編集モードの間に、別のラベルの追加を選択します。
追加したラベルを選択し、Text 値を次の式に設定します。 次の式は、予約から始めて 2 レベルの深さのリレーションシップを使用し、デスクを使用して場所を取得することを示しています。
ThisItem.Desk.Location.Phone
ラベルのサイズと位置を変更します。
編集モードの間に、ラベルをもう一度選択します。
追加したラベルを選択し、Text 値を次の式に設定します。
If(IsBlank(ThisItem.Desk.Location.'Primary Contact'),"No Primary Contact",ThisItem.Desk.Location.'Primary Contact'.'Full Name')
ラベルのサイズと位置を変更します。
予約ギャラリーは、次の図のようになります。
ファイル > 保存 を選択します。
戻る ボタンを選択します。
このページから移動しないでください。
演習 4: お気に入りのデスクを追加する
この演習では、ユーザーがお気に入りのデスクを選択できるアイコンを追加します。 また、デスク機能を表示するラベルを追加します。
タスク: お気に入りを追加する
このタスクでは、お気に入りのデスクを追加し、デスク機能を表示するラベルを追加します。
FindDeskScreen を展開して、GalleryDesks を選択します。
ギャラリーの編集アイコンを選択します。
挿入 タブに移動して、アイコン を選択し、アイコンの 1 つを選択します。 式を使用して、次のステップで特定のアイコンを設定します。 したがって、このステップでは、どのアイコンを選んでもかまいません。
追加したアイコンを選択し、Icon 値を次の式に変更します。 この式は、ユーザーがこのデスクをお気に入りとして指定しなかった場合は、サムズアップ アイコンを塗りつぶして表示し、または、ユーザーがすでにデスクをお気に入りとして選択していた場合は、サムズアップ アイコンを表示します。
`If(CountIf(ThisItem.Users, ThisRecord.User = currentUser.User) > 0, Icon.ThumbsUp,Icon.ThumbsUpFilled)` > [!NOTE] > The CountIf does encounter [delegation](/power-apps/maker/canvas-apps/delegation-overview/?azure-portal=true) challenges, if you have a large amount of rows in your app you might have to use an alternate approach.
アイコンが選択されていることを確認します。 OnSelect を選択し、次の式を貼り付けます。 この式は、ユーザーがすでにデスクをお気に入りとして追加したかどうかに応じて、このデスクとサインインしたユーザーを関連付けるか、関連付けを解除します。
If(CountIf(ThisItem.Users, ThisRecord.User = currentUser.User) > 0, Unrelate(ThisItem.Users, currentUser), Relate(ThisItem.Users, currentUser))
次の図に示すように、ギャラリー内のアイコンを再配置します。
ギャラリー編集モードであることを確認します。 挿入 タブに移動し、ラベル を選択します。
追加したラベルを選択し、Text 値を次の式に設定します。 この式は、デスク機能名を連携し、Desk テーブルと Desk Features テーブルの間の多対多のリレーションシップを使用します。
Concat(ThisItem.'Desk Features', Name, " , " )
ラベルのサイズと位置をスペースに合わせて変更します。
保存 アイコンを選択します。
戻る ボタンを選択します。
再生 を選択して、アプリをプレビューします。
ギャラリーは次の図のようになります。 デスクの 1 つのサムズアップ アイコンを選択します。
アイコンはサムズアップに変わるはずです。 アイコンを再び選択します。
アイコンは、塗りつぶされた サムズアップ アイコンに戻ります。 アイコンを再び選択します。
プレビューを閉じます。
このページから移動しないでください。
演習 5: デスクのフィルター
この演習では、ユーザーがドロップダウン リストから機能を選択した場合に、デスク ギャラリーにフィルターを追加します。
タスク: 機能のフィルター
このタスクでは、機能のフィルターを追加します。
GalleryDesks を選択します。
式バーに移動し、Items 式に次の式を追加します。 この式は、デスクをフィルターして、選択された機能を持つデスクだけを表示します。 コンマを含めるのを忘れないでください。
,IsBlank(filterFeatures.Selected) || Desk in filterFeatures.Selected.Desks.Desk
ファイル > 保存を選択します。
戻るボタンを選択します。
再生を選択します。
選択した建物で使用できるデスク機能に注目します。
ドロップダウン リストから機能を選択します。 選択した機能を持つデスクだげが表示されます。
別の建物と機能を選択して、アプリケーションが予期したとおりに動作することを確認します。
プレビューを閉じます。
アプリ デザイナーを閉じます。