PowerApps

キャンバスアプリの作成方法#8 ~アプリ開発 ⑤~参照列とは?コンボボックスで複数選択して登録する方法

ミムチ
ミムチ
SharePointリストで作成した「レシピリスト」に「材料リスト」に登録した「材料名」から複数選択して登録したいのですが、うまく実装できませんぞ…

パワ実
パワ実
レシピリストと、材料リストは「多対多」の関係だね。

多対多リレーションシップの場合、SharePointリストの「参照列」が便利だよ!

この記事では、SharePointリストの「多対多リレーションシップ」を作成するときに便利な「参照列」を使い、Power Appsから複数選択して登録する実装方法を解説します。

この記事でわかること

  1. SharePointリストの参照列の作成方法
  2. 多対多リレーションシップとは何か
  3. Power Appsから複数選択して、参照列に登録する方法

Youtube動画で見たい方は、こちらからどうぞ!

SharePointリストの参照列とは?

SharePointリストの参照列とは?

ミムチ
ミムチ
そもそもSharePointリストの参照列とは何ですかな?

パワ実
パワ実
参照列を使うと、別のリストの列データを参照して登録することができるよ!

例えば以下の図のように、Table1: レシピリストに、Table2: 材料リストから「材料名」列を参照した列を追加できます。

参照列は、1レコードに複数のアイテムを「テーブル型」データとして登録でき、例えばカレーのレシピで、材料名列に、玉ねぎ、人参、牛肉を登録できます。

参照列は、多対多の関係を持つテーブル間の実装にとても便利です。

多対多リレーションシップとは?

ミムチ
ミムチ
多対多の関係性とは、どういうものでしたかな?

パワ実
パワ実
今回の場合、レシピリストと、材料リストのような関係が多対多になるよ。

  • Table1: レシピリストの一つのレコードは、Table2: 材料リストの複数のレコードに関係している。
  • Table2: 材料リストの一つのレコードも、Table1: レシピリストの複数レコードに関係している。

わかりやすく絵で見てみます。

レシピリストのカレーには、材料リストのニンジン、玉ねぎ等複数の材料が関係します。

逆に材料リストの玉ねぎから見ても、レシピリストのカレーや、シチュー等、複数のレシピに関係しています。

これが、多対多の関係です。

パワ実
パワ実
 SharePointリストで、この多対多のリレーションシップを実装するには、大きく2つのやり方があります。

中間テーブルを使う

多対多実装の代表的なものが、下図のTable3のように、中間テーブルを作成する方法です。

中間テーブル(Table3)に、「レシピID」列と「材料ID」列を持ち、2つのテーブルを紐付けます。

この中間テーブル(Table3)と、Table1: レシピリスト、Table2: 材料リストそれぞれのテーブル間は、一対多のリレーションシップで紐付きます。

ミムチ
ミムチ
ミムチも最初この方法で実装しようとしたのですが、うまく実装できず、困りましたぞ…

パワ実
パワ実
この実装方法はプログラミングをするアプリ開発では一般的だけど、SharePointリストを使う場合は、データベース自体に中間テーブルを自動で作成する機能等がないから、PowerApps側での実装が複雑になるんだよ。

参照列を使う

多対多実装のもう一つのやり方として、最初に説明した「参照列」を使う方法があります。

「参照列」を使うと、Table2: 材料リストの「材料名」列を直接参照することができます。

Table1: レシピリストの材料名は、Table2: 材料リストの「材料名」列に登録した材料名から複数選択して登録ができます。

Table2: レシピリストの「材料名」列をそのまま使ってデータ登録できるため、Power Apps側での実装も、とても簡単です。

パワ実
パワ実
1レコードに複数アイテム登録するというのは、データベースでは一般的ではありませんが、今回はPower Apps側の実装をシンプルにするためこの方法を採用しました。

コンボボックスで複数選択して登録する方法

SharePointリストの作成

まずはSharePointリストで参照列を作成しましょう!

※既にレシピ管理リストに、参照列で「IngredientName」列を追加している場合はこのステップは不要です

SharePointリストのレシピ管理リストに、 材料管理リストからIngredientName列を参照して追加します。

1.列の追加から「参照」を選択し「次へ」をクリックします。

2.以下の設定をして「保存」をクリックします。

  • 名前:任意の列名
  • ソースとしてリストを選択:材料管理リスト
  • 上のリストから列を選択:IngredientName
  • 複数選択を許可:はい

※複数選択を許可は、その他のオプションから選択できます

2.参照列で材料名列が作成されました。

データを新規に登録する際は、ドロップダウンで参照元の材料管理リストの、材料一覧から選択することができます。

パワ実
パワ実
これで準備は完了です!

Power Appsの入力フォーム作成

次にPower Appsの編集画面で、複数選択の編集フォームを使い、レシピ管理リストに材料名を登録します。

パワ実
パワ実
Power Appsから、SharePointリストの参照列(複数選択肢)に登録する方法は、主に以下の2つあります。

  1. Formコントロールを使う方法
  2. 自分で入力フォームを作成する方法

ミムチ
ミムチ
その2つはどう違うのですかな?

パワ実
パワ実
一言でいうと、Formコントロールを使う方が簡単で、自分でカスタマイズしたい場合は、自分で入力フォームを作成するよ。

①Formコントロールを使う方法

参照列に登録する場合、最も簡単な実装方法は「フォームコントロール」を使うことです。

1.Power Apps編集画面で「挿入」から「編集フォーム」を選択します。

2.データソースでレシピ管理リストを選択すると、自動的にフォームが作成され、材料名列はコンボボックスで複数選択できます。

3.あとは登録ボタンを作成し、SubmitForm関数で登録することができます。

ミムチ
ミムチ
前にやったデータベースへの登録と同じ実装方法を、今回もすればいいのですな!

データベースへの登録方法については、以下の記事を参考にしてください。

【PowerApps入門】キャンバスアプリの作成方法#5 ~アプリ開発②~関数とは何か?データベースへの登録・読込方法 基本的なデータベース操作(登録、読込、更新、削除)とは何か?を復習したい場合は、以下の記事を参考にしてください。 http...

②自分で入力フォームを作成する方法

Formコントロールは使わず、自分でフォームを作成し、Patch関数で登録することも可能です。

1.「挿入」から「入力」の「コンボボックス」を選択します。

2.コンボボックスコントロールの「Items」プロパティに、以下の関数式を入力します。

Choices(RecipeList.Ingredient)

Choices関数の使い方

  • その列で選択できる選択肢の一覧が取得できます。
  • 構文:Choices(テーブル名.列名)

※前回の記事で説明した「変数」を使い、登録ボタンをクリックすると、ポップアップ風の登録画面が表示される実装にしてみました

キャンバスアプリの作成方法#7 ~アプリ開発④~変数、コレクションとは?データベースの更新この記事では、Power Appsアプリ開発の知識として必須となる「変数」と「コレクション」について解説します。 変数やコレクションを使うと、複数レコードを一度に登録したり、ポップアップ風の実装をするなど、様々な場面で役立ちますので、是非マスターしましょう!...

複数のコントロールをまとめて右クリックでグループ化できるので、登録フォームのコントロールは1つのグループにしています。

フォームの作成はテキスト入力や、ドロップダウンのコントロールを使っており、材料の登録は複数選択する可能性があるため、コンボボックスを使います。

ドロップダウンとコンボボックスの主な違いは、コンボボックスの方が複数選択でき、選択肢の検索が可能な点です。

3.コンボボックスコントロールで、以下のプロパティを設定します。

  • SelectMultiple:TRUE ⇒複数選択を許可
  • IsSearchable:TRUE ⇒選択肢の検索を許可

4.登録するレシピ情報を入力し、最後にチェックアイコンのクリックでレシピに登録するので、チェックアイコンのOnSelectプロパティに以下の関数式を記載します。

Patch(RecipeList,
 Defaults(RecipeList),
  {RecipeName:TextInput_RecipeName_1.Text,
   CategoryID:LookUp(CategoryList, CategoryName =    Dropdown_Category2_1.SelectedText.CategoryName, ID),
   RecipeURL:TextInput_RecipeUrl_1.Text,
   Ingredient:ComboBox_Ingredient_1.SelectedItems,
   Evaluation:Rating_Recipe_1.Value,
   Remark:TextInput_Remark_1.Text}
);
UpdateContext({CreateRecipe:false})

ミムチ
ミムチ
コンボボックスで選んだデータは、「コンボボックス名.SelectedItems」で登録できるのですな!

Patch関数の基本的な使い方については、以下の記事も参考にしてください。

【PowerApps入門】キャンバスアプリの作成方法#5 ~アプリ開発②~関数とは何か?データベースへの登録・読込方法 基本的なデータベース操作(登録、読込、更新、削除)とは何か?を復習したい場合は、以下の記事を参考にしてください。 http...

5.実際にデータを登録し、動作確認してみましょう。

SharePointリストのレシピ管理リストにきちんと登録されていれば成功です!

参照列(複数選択肢)をギャラリーに表示

1.ギャラリーへの表示は、Concat関数を使い以下のような関数式を書きます。

Concat(ThisItem.Ingredient, Value, “,”)

Concat関数の使い方

  • テキストの個々の文字列とテーブル内の文字列を連結します。
  • 構文:Concat (テーブル、数式、区切り記号)

参照列で複数アイテムを登録した場合、テーブル型として登録されているため、表示するにはConcat関数を使いましょう。

最後に

この記事では、SharePointリストの参照列を使って、Power Appsから複数選択したアイテムを登録する方法を解説しました。

SharePointリストの参照列は便利ですが、通常のデータベースは1レコードに複数アイテムを登録することはできないため、中間テーブルを使う方が一般的になります。

しかしSharePointリストでは、中間テーブルが自動で作成されないため、多対多リレーションシップの場合は、「参照列」を使うと実装が簡単になります。

参照列を使った実装では、Formコントロールを使うのが簡単ですが、自分で登録フォームを作り、Patch関数で登録する実装も可能です。

パワ実
パワ実
SharePointリストは、リレーショナルデータベースを作成できないため、テーブル間のリレーションシップが複雑になる場合は、Dataverseや、Dataverse for teamsの利用を検討してみた方がよいでしょう。

キャンバスアプリの作成方法#9 ~アプリ開発 ⑥~ギャラリーで週間カレンダーを作り、リストを表示する方法Power Appsのギャラリーで、カレンダー形式で、日付ごとのタスク等を表示したいということもあると思います。 このとき、ギャラリーを入れ子にすることで簡単に週間カレンダーが作成できます。 この記事では、Power Appsのギャラリーで週間カレンダーを作り、SharePointリストに登録したItemを日付ごとに表示する方法を解説します。...
ABOUT ME
パワ実
DX推進担当(IT部門) 2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 Power Platformを使っていく中で、知りえた情報を発信している。 Youtube、Twitterでの情報発信もしています!

ご依頼・ご相談について

Power Platformに関するご相談は、こちらからお願いします!

Power Platform学習におすすめの無料ハンズオンセミナー、参考本は、こちらのページを参考にしてください。