※この記事は古くなっており、情報提供のために残しているものです。最新の記事はこちら
複数のレコードを別アプリにまとめて転記したい場合は、取得したレコードに対して「レコードを書き出す」をするだけでいいので簡単ですが、「テーブルごと転記」となるとそうもいきません・・・
ですが方法がないわけではありません!
本来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ドキュメントやサポートページもぜひご活用ください。