検証が足りませんが、とりあえず備忘録として書いておきます。
[前提]
○ファイルAの計算フィールド1; 計算式にリレーションを使っているためインデックスできない
○ファイルBにて、リレーション定義されている上記ファイルA::フィールド1を検索条件として検索を実行。
[case-1]
ファイルA::フィールド1のみを検索条件として検索を実行。時間はかかるが検索は正しく実行される。
[case-2]
ファイルA::フィールド1と、他のフィールド(ファイルBのフィールドでも他のリレーション先のフィールドでも良い)の両方を検索条件として検索を実行。このとき、
<FMP6 ローカル および サーバ共有>
正しく実行される。
<FMP7 ローカル および FMP8 ローカル>
正しく実行される。
<FMS7 サーバ共有 および FMS8 サーバ共有>
ファイルA::フィールド1に与えた検索条件は無視され、他の検索条件のみで検索した結果が返される。検索実行時間も早いため、ファイルA::フィールド1での検索は全く行なわれていない模様。
<回避方法>
ファイルA::フィールド1をテキストフィールドに変更。計算結果を自動入力するように設定。インデックスされるようにしたところ、FMS7/8にて正しく動作した。(当然)
ただし、テキストフィールドに対する計算結果の自動入力は、FMP7/8では適切なタイミングでアップデートされるようだが、FMP6ではメニューコマンドで再ルックアップを実行しないと更新されなかった。
パフォーマンス向上のため、インデックスなしの検索は行なわないように設計するのが原則であるとすれば、大きな問題とはならないが。
[03-22-2006 追記]
FileMaker Knowledge Base より
http://filemaker.custhelp.com/cgi-bin/filemaker.cfg/php/enduser/std_adp.php?p_faqid=5907
(FM-Tokyo ML にて松尾さんに教えていただきました)
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/12726816
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
FileMaker 8.0v3 updater リリース
Excerpt: FileMaker Pro, FileMaker Pro Advanced, FileMaker Server, FileMakser Server Advanced のそれぞれに 8.0v3 upd...
Weblog: FileMaker Pro 7/8 によるWeb開発覚え書き
Tracked: 2006-04-27 00:20
http://blog.seesaa.jp/tb/12726816
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
FileMaker 8.0v3 updater リリース
Excerpt: FileMaker Pro, FileMaker Pro Advanced, FileMaker Server, FileMakser Server Advanced のそれぞれに 8.0v3 upd...
Weblog: FileMaker Pro 7/8 によるWeb開発覚え書き
Tracked: 2006-04-27 00:20


ご参考までに、こちらの検証結果も書いてみます。
■現象
1. リレーショナルフィールドを含むAND検索で、
2. そのリレーショナルフィールドが非保存の計算フィールド
であったとき、
リレーショナルフィールドに対して設定した検索条件は無視される。
■再現できるバージョン
・FMS(A)8.0v2を使っている環境では、クライアントのバージョンによらず再現します。
・FMP(A)8.0v2を使っている環境では、サーバのバージョンによらず再現します。
ということで、Client / Serverを問わず「8.0v2」というバージョンがどこかで使われたら、この問題に引っかかるようです。
■回避策
AND検索の時のみ起こる現象のようなので、
1. リレーショナルフィールド単独で検索
2. 他の検索条件を使って「対象レコードの絞り込み」を実行
という手順に分解すれば回避できます。
バージョンによらず、スタンドアロンではこの問題は再現しません。
ちなみに当方のFMS8もマイナーバージョンはv2でした。