前回 (第1回) では、「レコード一覧へ移動」スクリプトステップの基本的な使い方と、その核となるレコード ID の仕組みについて解説しました。
今回は第2回として、さらに一歩踏み込み、このスクリプトステップが内部でどのように動作するのか、そして開発現場でつまずきやすい注意点について、詳細に解説していきます。
これまでの課題: “あの時の表示” を再現したい!
本題に入る前に、この新機能が解決してくれる課題をご紹介します。
「特定のレコード群を、特定の順番で表示したい」。これは、FileMaker 開発で非常によくある要求です。しかし、従来はこれを実現するために、以下のような少し手間がかかる方法が必要でした。
- 複雑な検索条件をスクリプトで組み立てる
- 専用のリレーションシップやテーブルオカレンス (TO) を設計する
- 対象レコードを保存するためにスナップショットリンクファイル (.fmpsl) を利用する
いずれも一長一短があり、スクリプトが複雑化したり、パフォーマンスに影響が出たりと、開発者にとって悩みの種でした。「レコード一覧へ移動」は、これらの課題をシンプルに解決してくれる強力なツールなのです。
動作の検証: 知っておきたい3つのポイント
このステップを使いこなすには、その裏側で何が起きているかを正確に理解することが不可欠です。ここでは特に知っておくべき挙動を3つのポイントに絞って解説します。
ポイント1: 検索対象は常に「全レコード」
このステップは、現在の対象レコードの状態に関わらず、常にテーブル内の全レコードを対象に、指定された ID のレコードを検索して表示します。
現在の対象レコードが絞り込まれていたり、ソートされていたりしても、それらは完全に無視されると覚えておきましょう。
ポイント2: ソート順は「指定した ID リストの順番」
このステップが実行されると、現在のソート状態は解除され、引数で渡したレコード ID のリストの順番がそのまま表示順になります。これにより、開発者が意図した通りの順番でレコードを正確に表示できるのが大きなメリットです。
処理が行われた場合、ソート優先順位は「<定義済み順序>」と表示されます。

ポイント3: レコードが見つからない時のエラー挙動
指定した ID のレコードが削除されていたり、そもそも存在しなかったりした場合、どのような挙動になるのでしょうか?
実は、この挙動は「表示先レイアウトの指定」によって変わるため、注意が必要です。
まず、エラーコードは2種類あります。
- エラー 101 (レコードが見つかりません):
ID リストの一部は見つかったが、一部は見つからなかった場合に発生。 - エラー 401 (要求に一致するレコードがありません):
ID リストの全ての ID が見つからなかった場合に発生。
このエラーコードを踏まえ、レイアウト指定による画面挙動の違いを見てみましょう。
使用するレイアウト | 見つかったレコード ID | 画面の挙動 | エラーコード レコード一覧へ移動 | 参考: エラーコード 関連レコードへ移動 |
---|---|---|---|---|
現在のレイアウト | 一部 | 見つかったレコードのみ表示 | 101 | 0 |
現在のレイアウト | 1件も無い | 対象レコードが 0 件になる | 401 | 101 |
別のレイアウト | 一部 | レイアウトが切り替わり、見つかったレコードのみ表示 | 101 | 0 |
別のレイアウト | 1件も無い | 何も起こらない (レイアウトも対象レコードも変わらない) | 401 | 101 |
特に重要なのは、「別のレイアウト」を指定し、かつ全ての ID が見つからなかった場合、何も変化が起きないという点です。エラー処理を適切に行わないと、ユーザーは処理が実行されなかったことに気づかない可能性があります。Get ( 最終エラー ) を使ったエラーハンドリングが必須と言えるでしょう。
また、参考までに「関連レコードへ移動」のエラーコードも表に追加しました。「関連レコードへ移動」と「レコード一覧へ移動」は動作が似ていますが、エラーコードは異なりますので混同に注意しましょう。
実践での注意点: レイアウトの指定ミス
第1回で解説した「コンテキストに依存しない」という自由度の高さが、時として思わぬ挙動につながることがあります。
たとえば、「顧客」テーブルのレコード ID リストを使って、誤って「商品」レイアウト(「商品」テーブルが基準)を指定してしまった場合、その ID と同じ ID を持つ商品レコードが表示されてしまうことがあります。
想定外の挙動を防ぐためにも、ID リストの元となるテーブルと、表示先レイアウトの基準テーブルが一致しているか、常に意識するようにしましょう。
まとめ
今回は「レコード一覧へ移動」の、一歩踏み込んだ挙動と実践的な注意点について解説しました。
- 検索対象は常に全レコードで、現在の対象レコードは無視され、入れ替わる。
- 指定したID リスト順が表示順となり、ソート状態は「<定義済み順序>」になる。
- レコードが見つからない場合の挙動は、表示先レイアウトの指定によって異なり、特にエラー 401 の挙動には注意が必要です。
特に、コンテキストによるエラーコードの違いは、信頼性の高いスクリプトを組む上で非常に重要な知識です。
基本編で学んだ使い方と、今回解説した詳細な挙動を合わせることで、この新機能をより安全かつ効果的に活用できるはずです。
次回はこのステップのさらなる可能性を探ります。第3回では、これまでに学んだ知識を活かし、開発効率を劇的に向上させる実践的なテクニックを具体例とともにご紹介します。お楽しみに!