2006年02月04日

FileMaker Server 7/8 でリレーション先の非インデックス・フィールドを含むAND検索の不具合

検証が足りませんが、とりあえず備忘録として書いておきます。

[前提]
○ファイル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 にて松尾さんに教えていただきました)


posted by Kojima at 07:44| Comment(3) | TrackBack(1) | 覚え書き | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
この問題、わたしもハマって検証してました。
ご参考までに、こちらの検証結果も書いてみます。

■現象
1. リレーショナルフィールドを含むAND検索で、
2. そのリレーショナルフィールドが非保存の計算フィールド
であったとき、
リレーショナルフィールドに対して設定した検索条件は無視される。

■再現できるバージョン
・FMS(A)8.0v2を使っている環境では、クライアントのバージョンによらず再現します。
・FMP(A)8.0v2を使っている環境では、サーバのバージョンによらず再現します。

ということで、Client / Serverを問わず「8.0v2」というバージョンがどこかで使われたら、この問題に引っかかるようです。

■回避策
AND検索の時のみ起こる現象のようなので、
1. リレーショナルフィールド単独で検索
2. 他の検索条件を使って「対象レコードの絞り込み」を実行
という手順に分解すれば回避できます。
Posted by takeuchi at 2006年02月07日 06:58
すんません、書き忘れました。
バージョンによらず、スタンドアロンではこの問題は再現しません。
Posted by takeuchi at 2006年02月07日 07:22
takeuchiさん、どうもありがとうございます。なるほど、絞り込み検索を使うという手がありましたね!
ちなみに当方のFMS8もマイナーバージョンはv2でした。
Posted by Kojima at 2006年02月07日 08:10
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

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
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。