PL-200 学習メモ (4) : キャンバス アプリ（リレーション、メディア、変数、検索）

# はじめに
この投稿は PL-200: Microsoft Power Platform 業務コンサルタントの学習をした内容のメモです。

投稿の一覧は以下のリンク先にあります。

https://qiita.com/atsmin77/items/f25bd707921c421cee03

# 前の投稿

https://qiita.com/atsmin77/items/aca397c0f2c6aa615422

## リレーション先のデータを追加

[リレーションシップ](#https://qiita.com/atsmin_intellilink/items/641445ee60d7271f23c3#%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B7%E3%83%83%E3%83%97)が設定されているテーブルも併せて編集することもできます。

リレーションシップが設定されているテーブルをデータソースに追加し、同様に一覧、詳細、編集画面を追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ec23bfe4-db98-77ed-c8cf-a7b80af032b9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e1971b80-c857-e505-8317-ec8cf1840a4a.png)

編集画面ではリレーションシップの列は自動的に対象のデータを選択するプルダウンになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/466244ee-43a4-628d-368e-cf9c2fdbeb38.png)

<img width="400" alt="Animation3-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e89cf792-41c3-69a6-af58-11ec3ffab115.gif">


:::note info 
ポイント
* 一覧画面のフィルタ

リレーション先の一覧画面に表示されるデータをフィルタするには[Filter 関数](https://learn.microsoft.com/ja-jp/power-platform/power-fx/reference/function-filter-lookup
)を使用します。

```
Items 欄：
Filter(【テーブル名】, 【条件】)

例：
取引先担当者一覧画面で選択された氏名と一致する旅費のデータにフィルタする場合
Filter(旅費,'取引先担当者 '.氏名 = ContactBrowseGallery.Selected.氏名)
```

フィルタした結果を並び替えるには Sort 関数と組み合わせて使用します。

```
Sort(Filter(旅費,'取引先担当者 '.氏名 = ContactBrowseGallery.Selected.氏名),発生日時,SortOrder.Descending)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/55fbe096-b8c9-8b42-20b6-4493d9a02846.png)

* 編集画面のプルダウンのデフォルト値

[プルダウン]()にデフォルトで選択されている項目は **DefaultSelectedItems** プロパティで指定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5dda2bb3-e261-d94a-63cf-ea8ab523b920.png)

プロパティを変更するためにはカードのロックを解除しておく必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3ca8cd57-1e67-29b8-eaa5-b13356449a27.png)
:::

https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/working-with-cards

## メディア

[メディア] タブに画像ファイルなどをアップロードすれば、数式内で参照することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/c22c873f-bf5a-d50b-da21-ce14cdb23c95.png)

## 変数
### グローバル変数とコンテキスト変数

グローバル変数のスコープはアプリ全体で、変数の値はアプリの各画面で共有されます。

コンテキスト変数のスコープは各画面で、同じ名前の変数でも値はアプリの画面ごとに分離されていいます。

| 名前 | スコープ | 初期化の方法 |
|:-:|:-:|:-:|
|グローバル変数 |アプリ全体|Set 関数   |
|コンテキスト変数|各画面   |UpdateContext 関数   |

### グローバル変数

グローバル変数は数式内で Set 関数によって作成できます。作成したグローバル変数は If 文などの条件式で使用することができます。

```
Set(【変数名】,【初期値】)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b70c8ebe-0a54-ee10-7bee-187591ef76a5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/8e1429ac-1b56-4ec8-ef31-656da1ea6751.png)

### コンテキスト変数

グローバル変数は数式内で UpdateContext 関数によって作成できます。UpdateContext 関数では複数の変数をまとめて初期化できます。異なる画面で同じ名前の変数を定義できます。また Navigate 関数でも生成できます。


```
UpdateContext({【変数名1】:【値1】,【変数名2】:【値2】}...)

Navigate(【スクリーン名】,【画面遷移効果】, {【変数名1】:【値1】...})
```
使用例：各画面の項目の並び順を制御する変数

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/8abb1bda-7b17-6d48-c606-d177d95428ac.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ce0335eb-6423-cd7b-0d66-ac01ad6469e5.png)

※ 式が長くなって読みづらいときは [テキストの書式設定] ボタンから式を見やすく成形することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/0dc58120-a1b0-25b5-00c3-190ee22bf12f.png)

https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/working-with-variables

## 検索

レコードの文字列検索は Search 関数で行います。似ている関数に Filter 関数や LoopUp 関数があります。Filter は文字列以外の任意の条件で検索でき、LoopUp はヒットした行のうち最初の 1 行だけを返します。

| 名前 | 説明 |書式|
|:-:|:-:|:-:|
| Search | 文字列での検索|Search(【テーブル名】,【検索テキスト】,【列名1】,【列名2】...)|
| Filter  | 任意の条件で検索  | Filter(【テーブル名】,【検索条件】)
| LookUp  | 任意の条件で検索（最初の1行のみ） | LookUp(【テーブル名】,【検索条件】|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/0eda4718-d8d6-8294-d773-6bd602d05138.png)

![PL200-4-2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/8b0966d0-1dfd-336e-c51a-319683497913.gif)

https://learn.microsoft.com/ja-jp/power-platform/power-fx/reference/function-filter-lookup

# 次の投稿

https://qiita.com/atsmin77/items/1bb456f221ab8223913c