Udemy 新コース: 作って学ぶPower BI!

【O365ライセンス内でPowerApps開発】 Vol.11 営業支援アプリの作成(タブレットレイアウト)のタブに活動リストの関連付けとFilter機能説明

ここまで作成した営業支援アプリのタブに活動リストを追加するところまでは行ったかと思いますが、まだ張りぼての状態です。

営業案件:活動 = 1:Nの関係となるように開発を行ってみたいと思います。いわゆるリレーショナルデータベースの構造をSharePoint側で作らずにPower Apps側で作成するという試みでもあります。

SharePoint側で作るのは結構突き詰めていくと本格的な開発になってしまいますが、Power Appsでやればそのレベルではありません。

ちなみにN:1の関係の開発はこちらで紹介しています。

 

営業案件アプリに活動管理機能の追加

スクリーンショットのように活動リストにリンクしたGalleryを新たに追加します(Galleryのプロパティ値であるItemsに活動を設定)。

選択した営業案件だけに関連する活動だけ表示するようにするため、Filter関数を用います。

まずは簡単にFilter関数の説明をします。

コード

Filter([Table], [Logical test], [Logical test],...)
[Table]には今回SharePointリストの「活動」を設定します。このデータの中で[Logical test]で一致したデータだけ表示する機能です。[Logical test]は複数設定して、その複数条件でフィルターさせることもできます。

 

前回までの開発で、営業案件の1レコードを選択するとSelectedItem変数に営業案件レコードが格納されます。

そのSelectedItemにおける営業案件IDの値を取得して、その値が活動リストの列における案件IDと一致している活動レコードだけフィルターして表示することで該当の営業案件に関連する活動だけ表示することを実現します。

その関数は以下の通りです。

コード

Filter(活動, 案件ID=SelectedItem.営業案件ID)

で、それとは別の話なのですが、もう一つ[Logical test]に条件を今回追加しています。

以下の「SearchBox1_1」というオブジェクト名は環境によって異なると思いますが、Gallery上部に配置してあるText inputが該当します。ここに入力した値によって、フィルターされる仕組みにしています。

コード

Filter(活動, 案件ID=SelectedItem.営業案件ID, StartsWith(活動ID, SearchBox1_1.Text))
MEMO

StartsWith関数は前方一致の場合に使う関数です。

反対に後方一致を行いたい場合はEndsWith関数で実現できます。

 

Search関数とFilter関数の使い分けは、今回のような関連するレコードのみ表示するようにしたいという観点、あるいは「継承」という観点が大事になってきます。

 

営業案件レコードの選択すると関連する活動が表示されるようにする

次に、営業案件のレコード選択の動作と連動するようにします。

Galleryの隣にフォーム、Addアイコン、Saveアイコンを追加します。

 

Addアイコンに以下のようにOnSelectプロパティに設定します。

新たにレコードを追加する際、自動で採番して活動IDに登録する機能のコードになっています。この書き方はいろいろあると思います。

コード

NewForm(Form3); 
UpdateContext({NewActivity: true});
UpdateContext({ThisRecordNumber: CountRows(活動.ID) + 1}); 
UpdateContext({ThisRecordNumberLength: Len(Text(ThisRecordNumber))});
If(
    ThisRecordNumberLength=1,
        UpdateContext({CreatedRecordNumber:  "ACT0000" & Text(ThisRecordNumber)}),
    ThisRecordNumberLength=2,
        UpdateContext({CreatedRecordNumber:  "ACT000" & Text(ThisRecordNumber)}),
    ThisRecordNumberLength=3,
        UpdateContext({CreatedRecordNumber:  "ACT00" & Text(ThisRecordNumber)}),
    ThisRecordNumberLength=4,
        UpdateContext({CreatedRecordNumber:  "ACT0" & Text(ThisRecordNumber)}),
    ThisRecordNumberLength=5,
        UpdateContext({CreatedRecordNumber:  "ACT" & Text(ThisRecordNumber)})
)

SubmitForm関数で、編集したフォームをSharePointに反映するようにします。

関数は簡単で、以下の通りです。Form3というのは環境によって変わるかと思いますが、今回は活動を更新/新規作成するフォームを指します。

コード

SubmitForm(Form3)

 

関連記事

こちらもどうぞ。

本日は以上です。

ご参考になれば幸いです。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です