こちら、続きです。
前の記事ではSharePoint にてデータソース・スキーマの作成を行いました。まだご覧になっていない方はご是非どうぞ。
目次
今回のテーマ
今回は、SharePoint のスキーマを使って、Power Appsで画面開発を行います。
SharePointで作成した顧客マスタと営業案件のリストページは以下のような対応になるようにカラムを登録していきます。
# | SharePoint リスト名 | Power Apps 機能名 |
1 | Customers | 顧客マスタ |
2 | Opportunities | 営業案件 |
出来上がりイメージ
以下アニメーションになっています。
- 顧客マスタを追加することや、営業案件を追加することができるようになっています。
- 顧客マスタを追加するときには「C0006」という番号が自動採番されています。
- すぐさま新しく追加されたマスタを使って、営業案件を追加しています。
自動採番機能とは?
ここで重要なポイントなので補足です。
マスタを作成する際には、区別するため一意のIDをレコードにふる必要があります。
イメージとしては以下のとおりです。
- レコード固有のID
- カウントアップ
- Prefixに意味をもたせる
- 桁数が固定(足りない桁には0をつけて補完する)
ちなみにYouTubeで別のアプリですが作り方を紹介しています。
自動採番の基本的な考え方は以下のとおりです。
- 行数を数えて+1: CountRows()+1
- 固定テキスト結合: ”T”&カウント値
- カウント値の桁数に応じて”補完する0の桁数”の切り替え: If()
だいたいこんな感じでイメージできれば関数を書いていけます。
作成に進みましょう!
Power Appsでの作成
SharePoint での自動作成機能の後
自動で作成すると、以下のように一覧が作成されています。
ここで追加ボタン「+」に以下のような関数を記述します。これが先程の自動採番機能です。
NewForm(EditForm1);Navigate(EditScreen1, ScreenTransition.None);
UpdateContext({SelectedItem:Blank()});
UpdateContext({ThisRecordNumber: CountRows(Customers.CustomerId) + 1});
UpdateContext({ThisRecordNumberLength: Len(Text(ThisRecordNumber))});
If(
ThisRecordNumberLength=1,
Set(CreatedRecordNumber, "C0000" & Text(ThisRecordNumber)),
ThisRecordNumberLength=2,
Set(CreatedRecordNumber, "C000" & Text(ThisRecordNumber)),
ThisRecordNumberLength=3,
Set(CreatedRecordNumber, "C00" & Text(ThisRecordNumber)),
ThisRecordNumberLength=4,
Set(CreatedRecordNumber, "C0" & Text(ThisRecordNumber)),
ThisRecordNumberLength=5,
Set(CreatedRecordNumber, "C" & Text(ThisRecordNumber))
)
最後、Ifで場合分けされているので多数ありますが、Set関数でCreatedRecordNumberが作成されているのがわかると思います。結局、裁判された値は「+」を押したと同時にこの変数に格納されます。
編集画面に移ります。
CustomerIdのところを選択して、CustomerIdのDefaultの値を以下のように設定します。
If(IsBlank(ThisItem.CustomerId), CreatedRecordNumber, ThisItem.CustomerId)
もし既にCustomerIdに値が入っているような既存レコードでしたらその値を入れたままにするというロジックになっています。
営業案件機能の実装
営業案件の画面を作成します。
データソースは以下のようにSharePoint を選択します。
先ほど作成したOpportunitiesをデータソースとして選択します。
営業案件のレコード編集画面として、フォームを追加します。
フォームには同じようにデータソースにはOpportunitiesを選択し、CustomerId、CustomerNameが表示されるようにします。
CustomerNameについては、テキストでの自由入力ではなく顧客名で選択できるように変更します。
つまり、ドロップダウンで選択できるようにカードからドロップダウン形式に変更します。まずはテキストボックスを削除し、カードを選択した状態でドロップダウンを挿入します。
画面遷移の設定
新しい営業案件のフォームには「✕」ボタンには戻れるようにOnSelectのプロパティにBack関数を設定します。
新しい営業案件のフォームのうち、チェックボタンには入力結果の送信とScreen1に戻れるように設定します。ここもBack関数を使っても良いです。
Customers画面から営業案件に遷移できるようにアイコンを追加してNavigate関数を記述します。
営業案件側も同じように設定します。
こんな感じで行って来てを設定します。
ここまでで完成です。
ご覧頂きましてありがとうございました。ご参考になりましたら幸いです。