注:この記事は内容が古くなっています
この記事は内容が古くなっていますが、参照のために残しています。
最新の(よりシンプルな)実現方法については「テーブルで累計計算をしてみる」をご覧ください。
はじめに
テーブルにある数値の右に累計値を追加したいというケースはよくあると思います。
今回は編集画面で計算する方法を紹介します。
今回のカスタマイズで出来ること
ボタンを押すと累計値がセットできます。
追加先アプリには以下のフィールドを作成しました
Customineの設定
全体の設定はこのようになります。
設定が長いので、部分ごとに分けて説明します。
事前準備
「追加画面・編集画面を表示した時」に「ボタンをスペースに配置する」でボタンを用意します。
ループ開始
「ボタンを押した時」に「テーブルの列に行番号をセットする」で最初に行番号をセットします。次に「フィールドに値をセットする」でカウンターに0をセットします。
これによりループが開始されます。
ループ終了判定
「フィールドの値を編集して値が変わった時」でカウンターの値が変わったときに「フィールド値が空ならば」で、「情報ダイアログを表示する」を使って完了したことをダイアログ表示で知らせます。
カウンターが空になるのは、19番の「フィールド値が特定の値ならば」でカウンターがテーブル行数よりも多くなったときです。その比較値には = テーブル.length を使います。テーブルや複数選択などのフィールドに .length を付けると数が取得できるので、アクション数を減らしたいときには便利です(「テーブル行数をカウントする」を使わなくても大丈夫です)
ループ処理
「フィールドの値を編集して値が変わった時」でカウンターの値が変わったときに「フィールド値が空ならば」でカウンターの値とテーブル行数を比較して、カウンターの方が少なければループを継続します。またこの時には「フィールド値が空でないならば」も指定してください。
ループ内部の処理が終わったら「他のアクションの実行が完了した時」に「フィールドに値をセットする」でカウンターを+1します。
これによりループ終了判定から再度実行されます。
累計計算
「他のアクションの実行が完了した時」に「条件に合うテーブル行のフィールド合計値を計算する」で累計値を計算します。その後、「フィールド値が特定の値ならば」で今処理した行を指定して「フィールドに値をセットする」で累計値をセットします。
以上で累計値の計算が可能になります。
まとめ
今回の仕組みは累計計算の部分を差し替えるといろいろな処理に応用可能です。
例えば、
・商品ごとの売上を別レコードから取得して合計額をセット
・行にある部門別に採番をする
などが考えられます。
みなさんも色々とお試しください。