PowerApps Dynamics365 のテーブルを使ってタブレット版を作成してみました。



はじめに

今回はタブレット版を、しかもテーブルは Dynamics365 の取引先企業を使います。

もし、BB が営業としてお客様回りをするならこんな項目があったらいいよなーと思う項目を適当に作成し、それを実際に客先で入力しやすいような形に仕上げてみようと思って挑戦してみました。

作成してみて、この PowerApps は、本当に開発途中のアプリだという事が良くわかりました。

一つは、画面右側の設定項目が、今までは、 [データ][詳細設定] だったのが、[プロパティ][データ][詳細設定]と[プロパティ]が追加され、とても使いやすいようになっています。

又、開発時に値の設定を☆マークの数の設定にしたのですが、実行モードでは☆マークでは表示されず、テーブル作成時のフィールド名で表示されます。

がっかりもしますが、段々良くなって行く事を考えるとマイクロソフト自身が PowerApps に力を入れているのだという事もわかり楽しみでもあります。

今回作成しているアプリは、PowerApps のこの記事を作成するために作成したようなものです。全ての項目を表示しますが、そのつもりで見て下さいね。

作成したタブレット画面の説明

A 取引先企業の検索エリアです。
B 取引先企業を5個まで表示します。
C Bで選択した企業に登録されている担当者の名前と携帯電話番号を表示します。
D Bで選択した企業のデータで、その中でも BB が Dynamics365 に追加した項目になります。

左画面の説明

Screen2 の中には、下記が含まれます。

  • TemplateGalleryList3 取引先企業の検索により取引先企業がリスト表示される。
  • Gallery1 取引先企業リストで選択された企業の担当者リストが表示される。
  • FormViewer1 取引先企業データ、その中でも追加項目のデータ

各コントロールの名前は自由に変更出来るので、自分が分かりやすい日本語表示に変更した方がわかりやすいのでは。と思います。

下記は、取引先企業を編集モードで選択した画面になります。
Screen3の中にForm1が1個ある状態です。

編集用のコントロールには、全て4つのコントロールがあります。

  • StarVisible37 「説明」欄のチェックマークのOn/Offか? 意味が分かり次第更新します。
  • ErrorMessage37「説明」欄に対するエラーメッセージの設定が出来るのかな?意味が分かり次第更新します。
  • DataCardValue13「説明」欄に登録されている内容の表示や内容の保存するコントロール
  • DataCardKey13「説明」と項目名を表示します。

次を説明する時の為に、Screen2 の中の 取引先企業検索、上下順、TemplateGalleryList3、Gallery1、FormViewer1 などのコントロールの名前など憶えておいて下さいね。
やっぱりわかりやすい日本語表記にした方がわかりやすいですね。皆さんは日本語表示で頑張って下さいね。

タブレット画面のコントロールの設定

BB の PowerApps の例では、何回も作り直しなどやっていますので Screen 番号が 2 となっています。1 は削除したのでしょうね。このように名前はシステム上は自由で、最初の方は出来るだけ日本語の方がわかりやすくて良いと思います。

取引先企業検索

取引先企業を画面に呼び出すときの入力エリアになります。通常は、「テキスト入力」が表示されます。右側の×をクリックし、検索したい文字列を入力する為に使います。
「挿入」-「テキスト」-「テキスト入力」をクリックします。BB は、コントロール名として「取引先企業検索」と名前を付けています。

名前の変更は、変更したいコントロールをクリックして、右側にある … マークをクリックすると「名前の変更」が表示されます。

■得意先一覧の表示

ここは、取引先企業検索で指定した得意先が5個表示されるようにエリアを設定しています。
下記図の「ⅴ」マークから「ギャラリー」-「縦」を選択します。

BB の分では、TeamplateGalleryList3 となっています。今はどうしてこんな名前になったかはわかりません。これは Gallery のままでも大丈夫だと思います。マウスで、場所と大きさを適当に調整します。

items にはとりあえず、「取引先企業」を設定しておきます。

得意先に登録されている情報を表示

得意先データを表示するフォームも下図のようにⅴマークから「フォーム」-「ディスプレイ」を選択します。
すると FormViewer が作成されます。適当な大きさにマウスで調整して下さい。

  • DataSource は、ひとまず「取引先企業 」に設定しておきます。
  • 列へのスナップ 3
    これは、取引先企業データを3列づつ表示します。の意味です。指定したエリアにきちんと3等分で設定され便利です。
  • フィールド
    ここに表示されているフィールドの必要な項目欄の左側にチェックマークを付けてゆくと FormViewer 欄にフィールドが追加されて行きます。

それぞれのフィールドのコントロールは、下記のようになっています。すみません。勝手に BB が名前付しています。

  • DataCard11 フィールドコントロール
  • DataCardKey44 項目名コントロール
  • DataCardValue44 データコントロール

これらの場所やサイズは、プロパティ欄で変更が行えます。

  • 位置は、xとy、サイズは幅と高さ、パティング、BB 常に全て0、0にしています。説明が難しいので触って体験して下さい。
  • 位置、サイズは、場所によって、自動設定になっていて、毎回消してから値を変更しないとゆけない。という不便な分もあります。

全てのコントロールを指定して、同じ値を一括して変更が出来れば作業効率が上がって良いのですが、この設定が多いので今までのプログラミングの方がいいなーと思うところもあります。

編集モードになると、下記の2つが追加されています。

  • StarVisible2:☆マークコントロール
  • ErrorMessage2:エラーメッセージコントロールCardValue51

画像が汚くなってしまってすみません。です。

OnSelect や Item の設定

得意先を昇順、降順並べ替え

自由に名前付が出来るので、ここでは、コントロールには 「上下順」と適当に名前を付けています。又、アイコンも自由に付ける事が出来ます。ここでは、↑↓マークが適当かと思います。

OnSelect = UpdateContext(上下順:!上下順)

上下順:ここで初めて作っている変数です。!上下順の値を代入する。という意味になります。
!上下順:! マークは、逆(反対)の値を意味します。つまり、クリックすると前回とは反対の値が代入される。という事になります。

5個の取引先企業の表示

ここは、②で、TeamplateGalleryList3 で説明しています。しかし、ここで「取引先企業5個表示」と名前を変更してみました。すると数秒掛かるのですが、他の場所で使用している TeamplateGalleryList3 の名前も「取引先企業5個表示」と自動的に変更されます。ですから名前の変更は自由に変更できる。という事ですね。

Items=SortByColumns(Search(‘取引先企業 ‘,取引先企業検索.Text,”name”), “name”, If(上下順, Descending, Ascending))

SortByColumns 関数
1 つまたは複数の列に基づいてテーブルを並べ替える場合にも使用できます。

書式:SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, … ] )

SortByColumns(取引先企業の検索結果データ分のテーブル,取引先企業名(name)で並べ替え,取引先企業名の昇順降順順で並べ替え)になるのでしょうかね。間違っていたらすみません。そう理解して進んでおります。

Search 関数
テーブル内でそのいずれかの列にある文字列が含まれているレコードを検索します。
検索では大文字小文字が区別されません。文字列を使用します。

書式:Search( Table, SearchString, Column1 [, Column2, … ] )

Search(‘取引先企業 ‘,取引先企業検索.Text,”name”)
取引先企業テーブルで、取引先企業検索の文字列を検索します。検索するフィールドは、”name” です。

選択された取引先企業に含まれる担当者を3名表示

Items=Filter(‘取引先担当者 ‘, StartsWith(_parentcustomerid_value,取引先企業5個表示.Selected.accountid))

Filter 関数
数式を満たすレコードをテーブル内で検索します。 1 つ以上の条件に一致する一連のレコードを検索したり、そのような条件に一致しないレコードを除外したりするには、Filter を使用します。

書式:Filter( Table, Formula1 [, Formula2, … ] )

Formula(s) は、テーブルの各レコードの評価に使用する数式。 関数は、結果が true になるすべてのレコードを返します。 テーブル内の列を参照することができます。 複数の数式を指定した場合、すべての数式の結果は And 関数を使用して結合されます。

Filter(‘取引先担当者 ‘, StartsWith(_parentcustomerid_value,取引先企業5個表示.Selected.accountid))

StartsWith 関数
あるテキスト文字列が別のテキスト文字列で始まるかどうかをテストします。

書式:StartsWith( Text, StartText )

Text 必須。 テストするテキスト。
StartText 必須。 Text の先頭で検索するテキスト。 StartText が空の文字列の場合、StartsWith は true を返します。

_parentcustomerid_value と 取引先企業5個表示.Selected.accountid は、取引先企業idと思って使っています。

選択された取引先企業のデータを表示

DataSource=’取引先企業 ‘

これはいらないのでは?と思って削除すると、データ表示用のコントロールに黄色のビックリマークが付いてしまいます。よって設定しています。

Items=取引先企業5個表示.Selected

5個表示されている取引先企業の中から選択(クリック)された取引先企業のデータを表示します。

選択した取引先企業のデータの入力

データ編集する取引先企業は、ここで選択します。

Onselect=EditForm(データ編集フォーム);Navigate(Screen3,None)

Navigate(Screen3,None) スクリーン3の画面を開きます。

Onselect=EditForm(データ編集フォーム) データ編集を行います。

データ編集フォーム
DataSource=’取引先企業 ‘

入力した内容を登録します。
OnSelect=SubmitForm(データ編集フォーム)

編集画面を閉じます。
OnSelect=ResetForm(データ編集フォーム);Back()

以上のようになります。実際に動作する画面は下記の通りです。

お粗末なデータで申し訳ありません。

なお、開発モードでは、上記の画面になります。しかし、現在のバージョンでアプリの実行モード?では、まだ開発段階だからか画面の☆マークによるデータ入力や☆マークによるデータ表示は行えません。テーブルに設定したフィールド名で数値入力の状態になってしまいます。

一応、これで PowerApps の投稿を終わります。又、新しいネタが出たり、凄いのを作った時に投稿しますネ。お楽しみに!!