多対多リレーションシップの場合、SharePointリストの「参照列」が便利だよ!
この記事では、SharePointリストの「多対多リレーションシップ」を作成するときに便利な「参照列」を使い、Power Appsから複数選択して登録する実装方法を解説します。
- SharePointリストの参照列の作成方法
- 多対多リレーションシップとは何か
- Power Appsから複数選択して、参照列に登録する方法
Youtube動画で見たい方は、こちらからどうぞ!
SharePointリストの参照列とは?
SharePointリストの参照列とは?
例えば以下の図のように、Table1: レシピリストに、Table2: 材料リストから「材料名」列を参照した列を追加できます。
参照列は、1レコードに複数のアイテムを「テーブル型」データとして登録でき、例えばカレーのレシピで、材料名列に、玉ねぎ、人参、牛肉を登録できます。
参照列は、多対多の関係を持つテーブル間の実装にとても便利です。
多対多リレーションシップとは?
- Table1: レシピリストの一つのレコードは、Table2: 材料リストの複数のレコードに関係している。
- Table2: 材料リストの一つのレコードも、Table1: レシピリストの複数レコードに関係している。
わかりやすく絵で見てみます。
レシピリストのカレーには、材料リストのニンジン、玉ねぎ等複数の材料が関係します。
逆に材料リストの玉ねぎから見ても、レシピリストのカレーや、シチュー等、複数のレシピに関係しています。
これが、多対多の関係です。
中間テーブルを使う
多対多実装の代表的なものが、下図のTable3のように、中間テーブルを作成する方法です。
中間テーブル(Table3)に、「レシピID」列と「材料ID」列を持ち、2つのテーブルを紐付けます。
この中間テーブル(Table3)と、Table1: レシピリスト、Table2: 材料リストそれぞれのテーブル間は、一対多のリレーションシップで紐付きます。
参照列を使う
多対多実装のもう一つのやり方として、最初に説明した「参照列」を使う方法があります。
「参照列」を使うと、Table2: 材料リストの「材料名」列を直接参照することができます。
Table1: レシピリストの材料名は、Table2: 材料リストの「材料名」列に登録した材料名から複数選択して登録ができます。
Table2: レシピリストの「材料名」列をそのまま使ってデータ登録できるため、Power Apps側での実装も、とても簡単です。
コンボボックスで複数選択して登録する方法
SharePointリストの作成
まずはSharePointリストで参照列を作成しましょう!
※既にレシピ管理リストに、参照列で「IngredientName」列を追加している場合はこのステップは不要です
SharePointリストのレシピ管理リストに、 材料管理リストからIngredientName列を参照して追加します。
1.列の追加から「参照」を選択し「次へ」をクリックします。
2.以下の設定をして「保存」をクリックします。
- 名前:任意の列名
- ソースとしてリストを選択:材料管理リスト
- 上のリストから列を選択:IngredientName
- 複数選択を許可:はい
※複数選択を許可は、その他のオプションから選択できます
2.参照列で材料名列が作成されました。
データを新規に登録する際は、ドロップダウンで参照元の材料管理リストの、材料一覧から選択することができます。
Power Appsの入力フォーム作成
次にPower Appsの編集画面で、複数選択の編集フォームを使い、レシピ管理リストに材料名を登録します。
- Formコントロールを使う方法
- 自分で入力フォームを作成する方法
①Formコントロールを使う方法
参照列に登録する場合、最も簡単な実装方法は「フォームコントロール」を使うことです。
1.Power Apps編集画面で「挿入」から「編集フォーム」を選択します。
2.データソースでレシピ管理リストを選択すると、自動的にフォームが作成され、材料名列はコンボボックスで複数選択できます。
3.あとは登録ボタンを作成し、SubmitForm関数で登録することができます。
データベースへの登録方法については、以下の記事を参考にしてください。
②自分で入力フォームを作成する方法
Formコントロールは使わず、自分でフォームを作成し、Patch関数で登録することも可能です。
1.「挿入」から「入力」の「コンボボックス」を選択します。
2.コンボボックスコントロールの「Items」プロパティに、以下の関数式を入力します。
Choices(RecipeList.Ingredient)
Choices関数の使い方
- その列で選択できる選択肢の一覧が取得できます。
- 構文:Choices(テーブル名.列名)
※前回の記事で説明した「変数」を使い、登録ボタンをクリックすると、ポップアップ風の登録画面が表示される実装にしてみました
複数のコントロールをまとめて右クリックでグループ化できるので、登録フォームのコントロールは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})
Patch関数の基本的な使い方については、以下の記事も参考にしてください。
5.実際にデータを登録し、動作確認してみましょう。
SharePointリストのレシピ管理リストにきちんと登録されていれば成功です!
参照列(複数選択肢)をギャラリーに表示
1.ギャラリーへの表示は、Concat関数を使い以下のような関数式を書きます。
Concat(ThisItem.Ingredient, Value, “,”)
Concat関数の使い方
- テキストの個々の文字列とテーブル内の文字列を連結します。
- 構文:Concat (テーブル、数式、区切り記号)
参照列で複数アイテムを登録した場合、テーブル型として登録されているため、表示するにはConcat関数を使いましょう。
最後に
この記事では、SharePointリストの参照列を使って、Power Appsから複数選択したアイテムを登録する方法を解説しました。
SharePointリストの参照列は便利ですが、通常のデータベースは1レコードに複数アイテムを登録することはできないため、中間テーブルを使う方が一般的になります。
しかしSharePointリストでは、中間テーブルが自動で作成されないため、多対多リレーションシップの場合は、「参照列」を使うと実装が簡単になります。
参照列を使った実装では、Formコントロールを使うのが簡単ですが、自分で登録フォームを作り、Patch関数で登録する実装も可能です。