第106回 表示されているレコード毎の値を設定する

おはようございます。こんにちは。こんばんわ。
エヌ・ケイ・カスタマイズの 泉 です。

久しぶりに鹿児島本店に来ております。
今週は不安定な天気で雨が降ったりやんだりしております。
しかし、今週末の土曜日は、弊社の特別な日(詳しくはこちら)!!
晴れ男、晴れ女を総動員して「晴れ」にしてみせます!!

それでは、さっそくClaris FileMakerのテクニックについて勉強していきましょう!!

以下の記事は、Claris FileMaker 関数・スクリプトガイド(バージョン 19 対応)より、
「19.表示されているレコード毎の値を設定する(816ページ)」を元に掲載しています。

この文献から、Loop関数を使用したスクリプトステップの活用方法を学習することができました。文献の執筆者、関係者の方々に深謝いたします。

なお、このブログ記事の趣旨は、弊社所属スタッフの Claris FileMaker 学習の成果を公開することを目的とし、同時に、参考文献の内容の紹介に資するものであることを Claris International Inc. が確認しています。

Claris FileMaker 公式トレーニング教材

解説に入る前に。。。

解説に入る前に、本ブログのタイトルなんですが、Claris FileMakerがまだまだ骨身に染みていない私は、意味が理解できずに数秒固まりました。

私なりに解釈した結果

レイアウト(主にリスト形式)に表示されているレコード毎のフィールドの値を設定する』

さらに、Claris FileMakerでは、「レイアウトに表示されているレコード」→「対象レコード」として、メニュー表示やスクリプトステップで使用されていますので

対象レコード毎のフィールドの値を設定する』

さらにさらに、これから説明するテクニックは、対象レコード全てに同じ値を設定する「一括処理」のではなく、対象レコードを順を追って条件に沿った値を設定する「逐次処理」なので

逐次処理で対象レコード毎のフィールドの値を設定する』

が、私的にはしっくり来るのですが、タイトルを変える勇気はないので、このまま進めたいと思います。

表示されているレコード毎の値を設定する

対象レコード毎に、条件に応じた異なる値を設定します。

対象レコードのすべてに処理を行うには、いくつかの方法がありますが、ここでは [Loop] スクリプトステップを使って、対象レコードの最初のレコードから最後のレコードまで処理します。

今回のサンプルでは、『複数の担当者を奇数グループと偶数グループに振り分ける』という処理を想定します。

実装

テーブルには[担当者]と[チーム]というフィールドを作成します。

レイアウトはリスト形式で作成し、[担当者]と[チーム]、さらに「レコード番号」を配置します。
「レコード番号」は[挿入] メニューから[レコード番号]を選択すると、レイアウト上に「{{レコード番号}}」のラベルが配置されるので、適当な場所に移動します。

スクリプト「チーム振り分け」の内容は以下の通りです。

  • 1行目:[レコード/検索条件/ページへ移動] スクリプトステップを挿入します。移動先を[ 最初の]に設定して必ず 1 レコード目から順番に実行されるようにします。
  • 2行目:[Loop] スクリプトステップを挿入します。自動的に [End Loop] が挿入されます。
  • 3〜7行目:条件に応じた値を設定するために [Loop] と [End Loop] の間に [If] スクリプトステップを挿入します。[End If] が自動的に挿入されます。条件式が成立した場合のみ [If] から [End If] までの処理が実行されます。
  • 3行目:[If] スクリプトステップの条件式を指定します。Mod 関数と Get ( レコード番号 ) 関数を使用してレコード番号が偶数か否か判定します。レコード番号を[ 2] で除算した結果が[ 0] ならば条件式が成立して偶数と判定します。
  • 5行目:条件式が成立しない場合の処理を作成するために [Else] スクリプトステップを挿入します。[If] が成立しない場合は [Else] から [End If] までの処理が実行されるようになります。
  • 4、6行目:[If] と [Else] の後にそれぞれ [フィールド設定] スクリプトステップを挿入します。レコード番号が「偶数」ならば[ 偶数]、そうでなければ[ 奇数] がフィールド値として設定されるようにします。
  • 8行目:[レコード/検索条件/ページへ移動] スクリプトステップを使用して、対象レコードの最後のレコードまで[Loop] から [End Loop] の間の処理が繰り返し実行されるようにします。移動先を[ 次の] に設定すると [最後まできたら終了] オプションが表示されるので、最後のレコードで [Loop] から抜けるように設定します。

実行

スクリプト「チーム振り分け」を実行した結果は以下の通りです。

さいごに

いかがだったでしょうか?

私の実績としては、「リスト形式の対象レコード」を逐次処理することはありませんが、「ポータルのレコード」を逐次処理や一括処理することは多々あります。

請求書の「明細」のような、対象レコードに紐付く関連テーブルに対して逐次処理や一括処理するケースです。

「ループによる逐次処理」は、複雑なClaris FileMakerのシステムを構築しようとすると、必ず実装されるといっても過言ではない処理だと思っています。
慣れるまで、理解するまでには時間がかかるかもしれませんが、一度実装するとイメージしやすいので、試してみてください。

それでは、次回のブログもお楽しみに!!

参考文献: Claris FileMaker 公式トレーニング教材 から、「Claris FileMaker 関数・スクリプトガイド」 等を参考にしています
https://content.claris.com/fmb19_reg-ja