ファイルメーカーのデータベースを作る際の注意点。フィールドのタイプは数字?テキスト? その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  )を入力します。 そのままだと入力した値がそのまま表示されます。

数字タイプフィールドの表示-1

データの書式設定で小数に変えてみます。

数字タイプフィールドの表示-2

すると、数字以外が表示されなくなりました!( +  と a が見えなくなりました)

数字タイプフィールドの表示-3

でも入力時にはちゃんと入力している値 (10+3a)  が表示されます。

数字タイプフィールドの表示-3a

…では、FileMaker内では、どのように扱われているのでしょう?Advancedのデータビューアで見てみます。

数字タイプフィールドの表示-4

入力されたそのままの値 (10+3a) ですね。では、計算をさせてみるとどうなるのでしょう? 計算式を下図のように設定し、2を掛けてみます。

数字タイプフィールドの表示-5

なんと!(計算されている!)数字以外が除かれた数値として扱われているようです。(なんとも変な感じ…) 103  × 2  = 206    ということなのでしょうね。

 

なお、数字タイプのフィールドに数字以外を入力させたくない場合は、フィールドのオプションの必須条件のタイプに数字を選択すると、簡単に設定ができます。