複数のレコードを別アプリにまとめて転記したい場合は、取得したレコードに対して「レコードを書き出す」をするだけでいいので簡単ですが、「テーブルごと転記」となるとそうもいきません・・・


ですが方法がないわけではありません!

本来1レコードしか作成できない「テーブルデータをセットしたレコードを追加する」を、対象のレコードの数だけ「ループ処理」で実行すればできちゃうんです!


今回は「ループ処理」を使って、複数のレコードをテーブルごと別アプリに転記する方法をご紹介します!



Customineの基本的な事柄は、「はじめてのカスタマイズ」をご覧ください。


作成する処理の手順

複数レコードをテーブルごと転記する際の処理を大まかに説明すると・・・


まず、更新対象レコードすべてにしるしをつけ、しるしのついたレコードのみを表示する一覧に移動します。

移動したら、表示されたレコードを1件ずつ、テーブルごと別アプリにコピーし、コピーが終わったレコードからしるしを外す、を繰り返していきます。


ループ処理についてですが、今回は、一覧画面を表示した時に処理を行い、処理が終わると「画面をリロードする」で再度一覧画面を表示する・・・を繰り返す仕組みを使っています。

(同じような処理は「検索用文字列を一覧画面で一括作成する事はできますか?」「日報の工数を案件ごとに集計して案件マスタに反映する」でもご紹介しています。)


今回の作成例では、一覧画面の絞り込み機能でレコードを絞り込んだ状態でボタンを押すと、絞り込まれたレコードをすべて別のアプリに転記する、という使い方を想定しているので、Customineの処理のフローはこんな感じになります。




図の中の「転記中」チェックボックスが、更新対象であることを示す「しるし」になります。


サンプルアプリのフォーム


転記元アプリ



フィールド


フィールドタイプ

フィールド名

フィールドコード

備考

文字列(1行)

フィールドA

フィールドA

なし

文字列(1行)

フィールドB

フィールドB

なし

テーブル


テーブル


チェックボックス

転記中

転記中

選択肢:「転記中」のみ


テーブル内のフィールド


フィールドタイプ

フィールド名

フィールドコード

備考

日付

日付C

日付C

なし

文字列(1行)

フィールドD

フィールドD

なし


「転記用一覧」の設定


転記時のループ処理専用の一覧を作成します。

「転記中」にチェックが入っているレコードのみを表示します。表示するフィールドは何でもいいです。



ループ処理専用の一覧で普段の一覧としての使い方はできないので、デフォルトの一覧は別に作成しておきます。



転記先アプリ



フィールド


フィールドタイプ

フィールド名

フィールドコード

備考

数値

コピー元レコード番号

コピー元レコード番号

なし

文字列(1行)

フィールドA

フィールドA

なし

文字列(1行)

フィールドB

フィールドB

なし

テーブル


テーブル



テーブル内のフィールド


フィールドタイプ

フィールド名

フィールドコード

備考

日付

日付C

日付C

なし

文字列(1行)

フィールドD

フィールドD

なし



カスタマイズ


対象のレコードにチェックを入れ、「転記用一覧」に遷移するまで



☆ポイント☆


対象のレコードすべてに対して一斉に同じ更新を行うには、レコード取得+「レコードをもとに別のレコードを更新する」を使います。


「転記用一覧」でのループ処理



☆ポイント☆


「転記中」のレコード中から1レコードだけ取り出すために、「一覧で画面に表示されているレコードを取得する」で「転記中」のレコードをすべて取得してから、その1件目のレコード番号を示す「$(アクション番号)[0].レコード番号」をキーとして「キーを指定してレコードを取得する」でレコードを1件だけ取得する、ということをしています。

このキーとなったレコード番号は「転記中」のチェックを外す更新を行う「レコードを更新する(キーの値を直接指定)」でも再度使用しています。


テーブルデータをセットしたレコードを追加する」の「レコードに対するマッピング」の書き方はわかりづらいかもしれませんが、「挿入」から「他のアクションの結果」で「キーを指定してレコードを取得する」のアクションを選択すれば、取得したレコードの値を参照する式が自動で入力されます。


「テーブルに対するマッピング」は「レコードに対するマッピング」とは異なり、「他のアクションの結果」から選択するのではなく、「=日付C」のように転記元のフィールドコードを入力しましょう。




ここまでで、「ループ処理」で複数のレコードをテーブルごと別アプリに転記する処理は完成です!


ボタンを押すと、転記先アプリにレコードが転記されるでしょう。

転記が終わったレコードはどんどん「転記用一覧」から消えていき、空になると終了します。(ちょっと楽しいです笑)


ただ、これだけだとすべての転記が終了した後、転記先アプリにちゃんとレコードが入ったかわかりづらいので、自動敵に転記先アプリを表示してユーザーに見せてあげましょう。



また、転記元アプリを表示していたタブも空になった「転記用一覧」を表示していても仕方ないので、デフォルトの一覧に遷移してあげましょう。



以上でカスタマイズは終了です!


終わりに

今回のカスタマイズの作成例は、一覧画面の絞り込み機能でレコードを絞り込んだ状態でボタンを押すと、絞り込まれたレコードをすべて別のアプリに転記する、という使い方を想定したものでしたので、一覧に含まれるレコードに対して「転記中」のチェックをつけましたが、レコードの取得の仕方を変えれば、対象となるレコードを変えることができます。

一覧にチェックボックス列を追加する」や「レコードの一覧をポップアップで表示する」と組み合わせてチェックを入れたレコードを転記するようにする、というのもいいかもしれません。



ご不明点等ございましたら、チャットにてご質問ください!


Customineドキュメントサポートページもぜひご活用ください。