LoginSignup
0
2

More than 1 year has passed since last update.

LastSubmitとLast(もしくはLastN)の使いどころ

Last updated at Posted at 2022-03-01

何か月かぶりにキャンバスアプリをいじっていたらすっかり忘れておりましたので覚書です。
今回はLastSubmitとLast(/LastN)それぞれの使いどころについてです。

スライド1.PNG

今回はとあるアプリの顧客情報の登録を行う画面と登録確認ダイアログを例として挙げます。
まず自由にUIをデザインした登録フォームとDataverseで作成した登録フォーム画面を比較しましょう。

LastSubmitの使い方について

自前で作成したフォームに使えないLastSubmit

自前で用意したフォームでレコードを作成した場合、 ラベルにテーブル名.LastSubmit.列名.Textを記述しても最後に登録したデータは表示されません。

ちゃんと公式ドキュメントは読もう
ちなみに公式ドキュメントにLastSubmitプロパティ使用時の注意点がしっかりと書いてありました…

LastSubmit – 任意のサーバーが生成したフィールドを含む、最後に正常に送信されたレコード。

  • このプロパティは Edit Form コントロールのみに適用されます。
  • (中略)
  • このプロパティの値は OnSuccess 式で利用できます。

なのでLastSubmit関数を使用すると以下のような感じになります。

スライド2.PNG

上記例では登録データの確認にディスプレイフォームコントロールを使用していますが、 Edit Form コントロール.LastSubmit.表示させたい列名をTextコントロールのTextプロパティにセットすれば確認ダイアログを自由なデザインで表現することもできます。
LastSubmit関数.png

NewForm関数の実行タイミングに注意しよう

NewForm関数を実行するとLastSubmitに保存されたデータは空になります。
フォームコントロールを使用してキャンバスアプリを作成するときSubmitForm関数を実行した後はNewForm関数を実行する必要がありますが、LastSubmitを使用したい場合はどこでNewForm関数を実行するべきか考慮する必要があります。

上記の「顧客登録_2」画面では確認ダイアログを閉じて登録確認画面に戻るOKボタンのOnSelectイベントでNewForm関数を実行しています。

Last関数を使用する

登録フォームを自由なUIデザインにした上でレコード登録確認ダイアログが欲しい場合はLast関数とSortByColumnsを組み合わせると似たような挙動を再現することができます。

Last(SortByColumns(テーブル名, "createdon(作成日)")).表示させたい列名

ただ、これだとアプリを同一のタイミングで複数人が使用していた場合別の人が登録したデータが表示される可能性はあります。
テーブルのレコードの作成者列を使用して、テーブルをログイン中ユーザー名で絞る(Filter関数)ように設定すると良いでしょう。

Last(SortByColumns(Filter(テーブル名, 作成者.ユーザー名 = User().Email), "createdon")).表示させたい列名

動作の比較

スライド5.PNG
スライド6.PNG

2022/07/07 追記

Last絡みで配列のインデックスの仕方にアップデートがあったみたいですね。

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2