こんにちは zuzuです。
今回のタイトル、数字フィールドに数字以外を入力していた時に検索できないときの問題点ですが、
- 数字以外の文字を入力している
- 集計フィールドの数字タイプ
単純ですけど、だいたいこういったことが原因です。
見出しの通り、数字フィールドに数字以外を入力していた時に検索できないです。
当たり前じゃん!!と思うかもしれませんが、初めのうちはわからず意外とやっている人いるんじゃないですか?当時の自分がそうでした。。。フィールドを使いまわしていたりするとフィールドのタイプを確認せずにそのまま使ってたりしてたんです。
でもある時、「A0000」みたいな形で数字とアルファベットを混合して入力していたんですが、「0000」で検索しても全然表示されずに、なんでだろう?といろいろと原因を探していました。で、タイプを確認すると数字フィールドになっていて、FileMakerを使い始めたばかりということもあり、その点に疑問を持たずにものは試しとテキストタイプにしてみたら、なんと検索で表示されて、そこで初めてダメなんだと気づきました。
でもソートで使用していた場合、テキストタイプだと「1」の次に「10」の順番になるので、数字フィールドのままがいいと思うかもしれません。その場合は、ソート用のフィールドを文字用と数字用で分けてソートすればいいです。
GetAsNumberを使用して数字だけを抽出し、抽出した数字のみのフィールドを使用してSubstituteを使用してテキストのみにしてあげます。
※番号フィールド→「A0000」など文字と数字が混合したフィールド 数字のみフィールド・・・GetAsNumber(番号フィールド) テキストのみフィールド・・・Substitute(番号フィールド ; 数字のみフィールド ; "" )
だいたいこんな感じのフィールドを2つ作成してソートに使います。
ソートだけに限らず、「A」だけ検索したい、数字だけ検索したときにも使用できるので、お試しください。
こちらのもそのままですが、集計フィールドは検索できません。
集計フィールドの値を検索した場合は、集計フィールド同じになるようにリレーションやそういった集計値を取得できるような機能を作成しないといけません。
自分はよくリレーションを貼って取得するほうが多いです。
他には、一旦集計した値を保存用のフィールドを作成しておいて、そちらにスクリプトのフィールド設定で保存してそちらを使用したりもします。
最後に
データベースを作成するときに、あらかじめある程度のデータベースの設計を決めて作業すると思いますが、その時に数字タイプとテキストタイプは分けて使用するように設定しておいて、もしかしたら文字と数字が混合する可能性がある箇所も想定したデータベース作りが肝になると思います。
集計フィールドも使い勝手がいいので、よく使ってしまうかもしれませんが、欠点として計算フィールドの集計やあまりにレコード数が多いと処理に時間がかかってしまうことがあるので、検索されない以外も気を付けて使用したほうがいいですね。
以上、お読みいただきありがとうございました。