指定日付範囲の日別にレコードを作成したり、何かの条件に合うデータだけを連続で処理したいケースは色々とあると思います。
Customineではループ処理は無いのですが、「フィールドの値を編集して値が変わった時」を利用すると擬似的にループ処理を作成することができます。
今回のカスタマイズで出来ること
開始日付から終了日付までの日別で、別アプリにレコードを追加します
アプリの準備
サンプルアプリとして以下のフィールドを作成しました。
スケジュール登録
フィールド名 | フィールドコード | フィールドタイプ、他 |
スケジュール名 | スケジュール名 | 文字列 |
開始日付 | 開始日付 | 日付 |
終了日付 | 終了日付 | 日付 |
ループ判定 | ループ判定 | 文字列 |
編集画面では次のようになります。
スケジュール日別
フィールド名 | フィールドコード | フィールドタイプ、他 |
スケジュール名 | スケジュール名 | 文字列 |
日付 | 日付 | 日付 |
報告内容 | 報告内容 | 文字列 |
詳細画面での表示は次のようになります。
Customineの設定
全体の流れはこのようになります。
追加画面・編集画面を表示した時の処理
「追加画面・編集画面を表示した時」に「ボタンをメニュー位置に配置する」で、メニュー位置にボタンを追加します。
ボタンを押した時の処理
「ボタンを押した時」で「フィールドに値をセットする」を使い、ループを始めるためにループ判定のフィールドに値をセットします。今回は日付を順に増やす必要があるので、ループ用に流用します。
値をセットした後は「読み込み中画面を表示する」で処理中であることがわかるようにします。
ループ終了時の処理
「フィールドの値を編集して値が変わった時」に「フィールド値が特定の値ならば」で、ループ判定が 空欄 なら終了ということにして、終了時には「情報ダイアログを表示する」でダイアログを出すようにします。
ループ終了判定の処理
ループ判定には処理中の最大日付が入っているので、終了日付よりも大きい場合は処理終了にします。今回の終了判定には「フィールドの値を編集して値が変わった時」に「フィールド値が特定の値ならば」で「フィールド値をクリアする」を使い、ループ判定を空欄にしています。
レコード追加処理
ここが、処理のメインです。
「フィールドの値を編集して値が変わった時」に「フィールド値が特定の値ならば」で「レコードを追加する」を使い、ループ判定に入っている日付が終了日付以下の場合にレコードを追加します。なお、空欄は終了時の値なので空欄では無いことも条件に追加します。
レコード追加後は「日付を計算する」で日付を加算して、「フィールドに値をセットする」でループ判定にセットします。これにより次のループが開始されます。
まとめ
「取得したレコードを元にループ処理で特定条件に合うものだけ何かの処理をする」みたいなものも作成可能です。
「フィールドの値を編集して値が変わった時」は色々な判定に使えますが、1フィールド1用途にしないと誤動作の元になりますのでご注意ください。