表示方法「表形式」の落とし穴

FileMaker Proで共有ファイルを開いているときに表示方法を変更すると「レイアウトの変更を保存しますか?」というダイアログが表示される。レイアウトの変更を保存した場合、次にそのファイルのレイアウトを開いたときに、最初にその表示形式で表示されるようになる。この表示方法の中で「表形式」は、とりわけ一覧の視認性にすぐれており大変便利な機能だ。

表示方法「フォーム形式」。1画面に見えるレコードは1件

表示方法「表形式」。1画面に見えるレコードは、ウィンドウサイズの分だけ増える。複数のレコードを横断して確認したい場合に大変便利な表示方法だ

FileMakerのアプリケーションを開発しているときや、運用中になにかトラブルが起こったときに、複数のレコードを横断して確認したい場合が多々発生する。そのようなときに便利なのがこの「表形式」。レイアウトモードでフィールドの配置位置などを気にする必要もなく、レイアウトに配置されたフィールドをきれいに一覧にならべて表示してくれる。各フィールドのラベルをクリックしてソートできたり、表示領域を狭めたり広くしたりといった操作も簡単に行える。条件付き書式と併用すれば、メンテナンスやトラブル時に絶大な効果を発揮してくれることだろう。

この表形式には、次の特徴がある。

  • ポータル内のレコードは、関連レコード数に関係なく先頭の1件のみが表示される
  • フィールド一覧の幅サイズが合計で8000pxを越えている場合、越えた分のフィールドは表示されなくなる

ポータル内のレコードは、関連レコード数に関係なく先頭の1件のみが表示される

レイアウトにポータルを配置して関連レコードを複数表示している場合、表形式にするとポータルは消え、関連フィールドが残り先頭の1件のみが表示される状態となる。ポータルが消えている状態なので、「ポータル内の行へ移動」といったスクリプトではFileMakerエラーが返るようになる。返るエラー番号は3: コマンドが使用できません(たとえば誤ったオペレーティングシステム、誤ったモードなど)。GetLayoutObjectAttributeでポータルの情報を取得しようとしても、ポータル自体がないので意図した情報が返らなくなる。一覧でポータルを表示したい場合は「リスト形式」を使用しなければならない。

フィールド一覧の幅サイズが合計で8000pxを越えている場合、越えた分のフィールドは表示されなくなる

FileMakerのレイアウトサイズの上限は、高さ8000px、幅8000pxとなっている。レイアウトモードでこの高さや幅を超える場所にフィールドや各種オブジェクトを配置することはできないようになっている。表示形式で「表形式」を選択すると、レイアウトに配置されているフィールドが列となって表示されるが、この幅が8000pxを越えてしまうと、越えた分のフィールドは表示されなくなってしまう。配置されているフィールド数が多いレイアウトを表形式で表示すると、一部のフィールドが表示されないことが確認できるだろう。この場合、フィールドサイズや文字サイズを調整することで一度に表示するフィールド数を若干増やすことができる。FileMaker Proで表示する分にはフィールドが見えていないだけなので、フィールド設定などの操作は行える。Web公開の場合、画面上に見えているフィールドのみがXMLへの表示・処理対象となる。

この表形式だが、Web公開をおこなっているFileMakerファイルでは特に注意が必要だ。表形式にすると、上記の特徴のとおり「ポータルがなくなり」「フィールドの一部がレイアウトから消える」ことになる。フォーム形式で表示していたレイアウトを表形式にしてしまったことで、Webアプリケーション側で起こりうるトラブルを簡単に列挙してみよう。

  • ポータルで関連先テーブルのレコードを取得していた場合、先頭の1件しか取得できなくなる
  • ポータル内のレコードをFileMakerスクリプトで制御していた場合、動作しなくなる(FileMakerエラー 5)
  • 表形式で表示されなくなるフィールドを表示している場合、フィールド内容が表示されなくなる
  • 表形式で表示されなくなるフィールドに対して検索や編集を行っている場合、動作しなくなる(FileMakerエラー 102)

いままで動いていたFileMaker Webアプリケーションが、ある日突然FileMakerエラー5や102をログに出すようになって動作がおかしくなった場合は、メンテナンス時に「表形式」を選択して、レイアウトの変更を保存していないかを振り返ってみよう。共有ファイルでは表示形式を変更する際、「レイアウトの変更を保存しますか?」とダイアログが出るようになっている。このダイアログに「はい」と答えないかぎり、表示形式が保存されることはない。デベロッパとメンテナが複数関与しているFileMakerファイルの場合は、Web公開用のファイルとメンテナンス用のファイルを分けたり、あらかじめレイアウトモードで、特定のレイアウトは表形式にできないように制限を加えておきたいところだ。

共有ファイルで表示形式を変更する際に表示される確認のダイアログ。表形式でメンテナンスを行う場合にうっかりこのダイアログで「はい」と答えてしまうと、Webアプリ側で不都合が起きる可能性がある。本番系のファイルをどうしても触る必要がある場合は、かならず「いいえ」を選択しよう

あらかじめレイアウト設定で表形式のチェックを外しておけば、そのレイアウトでは表形式での表示ができなくなる。デベロッパとメンテナが複数関与しているFileMakerファイルの場合は、Webから参照するレイアウトとメンテナンス用のレイアウトを分けて用意しておいた方が、トラブルを未然に防ぐことができるだろう