また FileMaker Pro 6 のことですみません。文字列を照合フィールドとした際のリレーションの動作がおかしく、半日つぶしてしまいました。
FMP6では、FMP7のように照合フィールドを複数ペア定義することができませんので、計算フィールドで複数フィールドを連結し、照合フィールドとして使用することがあります。
FMP6では通常、文字列フィールドによるリレーションでは、「半角英数60文字までの完全一致」となっているはずでした。
しかし、上記の計算フィールドの定義で、二つの文字列フィールドを "-"(ハイフン)で連結していたところ、30文字程度の短い文字列であるにもかかわらず、完全一致しないレコードがリレーションされてしまうことが起こりました。
調査の結果、FMP6はなぜか先頭から半角20文字までしか見ないことがわかりました。どうやら、文字列フィールドのインデックスは、単語ごとに先頭から半角20文字しかとらないことに起因しているようです。
例えば、文字列で「123456789-1234567890」(桁数が判りやすいように数字にしていますが、文字列ですのでお間違えなく)と「123456789-12345678901」は一致してしまいます。
これはリレーション先のフィールドのインデックスを"ASCII"にしても同じでした。
この "-" (ハイフン)を、"_" や " " にすると、うまく動作するのです。これは、長い文字列が "_" や " " により複数の単語に分解され、それぞれの単語ごとに20文字までマッチングをとってくれるからです。(注:単語の順番はちゃんと照合してくれます)
"-" (ハイフン) では単語区切りとみなされず、全体を1単語として扱ってしまうため、20文字を超える場合に一致しないリレーションがマッチしてしまうというわけです。
なお、この他に、リレーションの「親」側の文字列に"*"が含まれていたりすると、ワイルドカードと見なされてしまったりする場合もあるようです。
http://www.ogawa.tokushima.tokushima.jp/%7efmjuser/fmjml_logf/003000/4571.html
FMP6では、リレーションのキーに文字列を使用することは避けるか、どんな文字が入ってくる可能性があるのかを予めよく調べておく必要がありますね。
2005年03月10日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/2348872
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.seesaa.jp/tb/2348872
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック

