ファイルメーカーのデータベースを作る際の注意点。フィールドのタイプは数字?テキスト? その2
2013年02月03日 03:40 PM
ファイルメーカーのTips
先日のTips(こちら)でファイルメーカー(FileMaker)のフィールドのタイプについて、エクセル(Excel)にエクスポートした場合の違いについて取り上げましたが、今回はファイルメーカー内での違いについて お話ししたいと思います。
基本的には、数字しかセットしないのであれば、「数字タイプ」、数字以外もセットされるのであれば、「テキストタイプ」でフィールドを作成すれば、何も問題はありません。 ですが実際には、数字しかセットされないのに、最初にとりあえずで「テキストタイプ」のフィールドを作成して結局そのままになったり、CSVファイル等からインポートと同時にテーブルを作成して、そのまま「テキストタイプ」 で残ってしまう、という事がたまにあります。
数字を「テキストタイプ」のフィールドにセットしても何も問題はないのですが、以下のような場面でちょっと困った事が起こります。
以下のようなデータがセットされているテーブルを例に説明します。 (6件のレコード)
1
2
3
10
21
100
1.検索時
検索モードで「1」で検索すると…
・フィールドが「数字タイプ」だった場合 →検索結果→ 1
・フィールドが「テキストタイプ」だった場合 →検索結果→ 1,10,100 (文字1で始まる値が対象になる)
検索モードで「>2」で検索すると…
・フィールドが「数字タイプ」だった場合 →検索結果→ 3,10,21,100
・フィールドが「テキストタイプ」だった場合 →検索結果→ 3,21 (文字列2より大きい値が対象になる)
2.ソート時
昇順ソートをかけると…
・フィールドが「数字タイプ」だった場合 →ソート結果→ 1,2,3,10,21,100
・フィールドが「テキストタイプ」だった場合 →ソート結果→ 1,10,100,2,21,3 (文字列としてソートされる)
画面上で上記操作をする場合は、直ぐに「フィールドのタイプが違う」んだなとわかりますが、スクリプトに組み込んだ場合は、原因がわかるまで時間がかかってしまうかもしれません。
また、リレーションシップを作成する場合は、照合フィールドのタイプが異なるとファイルメーカーのバージョンによっては正しく結合されない場合がありますので、注意しましょう。 とりあえずで作られた「テキストタイプ」のフィールドと、数字しか入らないからと後で作成したテーブルの「数字タイプ」のフィールドを照合フィールドにするなんて事が無いように…。
なお、以前も書きました通り、既にデータを入力済でも、「数字タイプ」から「テキストタイプ」の変換は問題ありません。(さすがファイルメーカー!) 但し、「テキストタイプ」から「数字タイプ」の変換は表示が変わる可能性があります。 また、他のタイプ間の変換では、値が変わってしまう危険性がありますので 必ず事前にバックアップを取ってから実行するようにしましょう。
さて、ファイルメーカー以外のデータベース(Access、Oracle等)を触られた事がある方ならわかると思うのですが、『数字タイプのフィールドに数字以外の値をセットできてしまう』事に違和感を覚えてしまいます。 では、実際に「数字タイプ」のフィールドに数字以外の値をセットした場合、どのように扱われるのでしょう? 試してみました。(FileMaker Pro Advanced 11.0v3 を使用)
「数字タイプ」のフィールドをレイアウトに置き、文字( 10+3a )を入力します。 そのままだと入力した値がそのまま表示されます。
データの書式設定で小数に変えてみます。
すると、数字以外が表示されなくなりました!( + と a が見えなくなりました)
でも入力時にはちゃんと入力している値 (10+3a) が表示されます。
…では、FileMaker内では、どのように扱われているのでしょう?Advancedのデータビューアで見てみます。
入力されたそのままの値 (10+3a) ですね。では、計算をさせてみるとどうなるのでしょう? 計算式を下図のように設定し、2を掛けてみます。
なんと!(計算されている!)数字以外が除かれた数値として扱われているようです。(なんとも変な感じ…) 103 × 2 = 206 ということなのでしょうね。
なお、数字タイプのフィールドに数字以外を入力させたくない場合は、フィールドのオプションの必須条件のタイプに数字を選択すると、簡単に設定ができます。