2005年03月10日

(FMP6) 文字列でのリレーションで気をつけるべきこと

また 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では、リレーションのキーに文字列を使用することは避けるか、どんな文字が入ってくる可能性があるのかを予めよく調べておく必要がありますね。
posted by Kojima at 17:59| Comment(0) | TrackBack(0) | 覚え書き | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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

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

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