FileMaker 17の新機能 ~デフォルトのフィールド~
2018年06月05日 10:00 AM
FileMaker 17
FileMaker Pro 17では、新規テーブル作成時に一般的に使用されている複数のフィールドが自動的に追加されるようになりました
- 自動作成される5フィールド
新規でテーブルを作成すると、下記の5つのフィールドが自動で作成されます。
- 「主キー」(自動入力で計算値Get(UUID)を設定)
- 「作成情報タイムスタンプ」(レコード作成時のタイムスタンプ)
- 「作成者」(レコード作成をしたユーザーのアカウント)
- 「修正情報タイムスタンプ」(レコード修正時のタイムスタンプ)
- 「修正者」(レコード修正をしたユーザーのアカウント)
「主キー」フィールドのオプションを見てみましょう。
「主キー」は計算値でGet(UUID)※が設定されており、「フィールドに既存の値が存在する場合は書き換えない」のチェックがはずれているので常に検証される設定です。
※Get(UUID):固有の 16 バイト (128 ビット) の文字列を返します。たとえば、この関数を使用してレコードの固有の ID を生成できます。
また全てのフィールドに「データ入力時の値変更の禁止」と「空欄不可」にチェックがついており、コメントも設定されています。
- デフォルトフィールドを作成したくない場合
新しいテーブルにこれらのフィールドが追加されないようにするには、「DefaultFields.xml」という名前の空のファイルを次の場所に置きます。
(このブログではこのXMLファイルの保存場所を「ユーザー定義の保存場所」とします。)
<ユーザー定義の保存場所>
Windows:<ドライブ>: ¥ProgramData¥FileMaker¥Shared
※Windowsの保存場所はProgramFileではなくProgramData
Mac: /ユーザ/共有/FileMaker/Shared
- デフォルトフィールドをカスタマイズしたい場合
更に、このユーザー定義の保存場所にカスタマイズした「DefaultFields.xml」を配置すると、デフォルトフィールドのフィールド名の変更やフィールドの追加などすることができます。
では、作成されるデフォルトのフィールドの名称を変更したり、フィールドを追加したい場合はどうしたらよいのでしょうか?
デフォルトのフィールドの情報はXMLファイル内で定義されています。このファイルは以下の場所に保存されています。
Windows:<ドライブ>: \Program Files\FileMaker\FileMaker Pro 17 Advanced\Extensions\Japanese\DefaultFields.xml
Mac:/Applications/FileMaker Pro 17 Advanced/Filemaker Pro Advanced.app/Contents/Resources/jalproj/DefaultFields.xml
このDefaultFields.xmlをコピーし「ユーザー定義の保存場所」に保存し内容をカスタマイズすることができます。
DefaultFields.xmlをダブルクリックしてブラウザなどで開いてみます。
XML内の主なタグと属性は以下の通りです。
<Field >タグの属性の指定
comment | フィールド定義のコメント欄の内容 |
datatype | フィールド定義のタイプ部分、計算フィールドの場合は計算結果のタイプ
テキスト=Text |
fieldtype | 計算フィールドの場合はCalculated、通常のフィールドの場合はNormal |
name | フィールド名 |
id | フィールドのID番号 1から順番につける |
その他のタグ
計算式の指定方法 | <Calculation> <Text><![CDATA[ ~ここに計算式を書く~ )]]></Text> </Calculation> |
「入力値の自動化」設定 | <AutoEnter></AutoEnter>内に属性値、要素の内容を指定 |
「入力値の制限」の設定 | <Validation> </ Validation >内に属性値、要素の内容を指定 |
「データの格納」の設定 | <Storage> </ Storage >内に属性値、要素の内容を指定 |
上記を参考にして、次のような修正をしてみましょう。
(修正例)
デフォルト定義のDefaultFields.xmlを元に
・1つ目のフィールド名「主キー」を「ID」に変更
・「参考画像」という名前のオブジェクトフィールドを追加
・本日の日付を表示する計算フィールド(計算結果が日付)を追加
まず、DefaultFields.xmlをコピーし「ユーザー定義の保存場所」に保存します。このファイルをメモ帳などのテキストエディタで開きます。
- フィールド名を変更
「<Field id=”1″ name=”主キー”」のname部分を「<Field id=”1″ name=”ID “」に変更します。
- フィールド数を追加
ここでは2つフィールドを追加し7つになりますので
<DefaultFields membercount=”5″>を7に変更します。
- 「参考画像」フィールドの追加
<Field id=”5″></Field>の下に以下を追加します。
<Field id=”6″ name=”参考画像” fieldtype=”Normal” datatype=”Binary” comment=”参考の画像をいれる”/>
- 「今日」フィールド(計算フィールド)の追加
更に以下を追加します。
<Field id=”7″ name=”今日” fieldtype=”Calculated” datatype=”Date” comment=”今日の日付を表示” >
<Calculation>
<Text><![CDATA[Get( 日付 )]]></Text>
</Calculation>
</Field>
全ての修正を終えたらDefaultFields.xmlファイルを保存します。修正したファイルをブラウザなどで開くと下のようになります。
ここでファイルメーカーの新規テーブルを作成すると、デフォルトのフィールドには「参考画像」というオブジェクトフィールド、「今日」という計算フィールドが追加されました。
(XMLファイル修正保存後、ファイルメーカーの再起動は不要です。)
- カスタマイズの注意点
・ユーザー定義の保存場所にXMLファイルがない場合はデフォルト定義のXMLが参照されます。
・XMLファイル内でフィールドの名前が重複している場合には2つ目のフィールドに自動で「2」が追加されます。
・XMLファイルの途中のコードを中途半端に消すなど、XMLとして成立しない場合デフォルトフィールドは作成されません。
・<Field>~ </Field>内の記述がおかしい場合はそのフィールドだけ作成されないこともあるようです。
- デフォルトフィールドが作成される時とされない時
まとめると以下のようになります。
○ 作成される | ・データベースの管理ウインドウからテーブル作成時
・新規ファイル作成時 |
× 作成されない | ・DefaultFields.xmlが指定場所にない場合 ・DefaultFields.xmlの中身が空、またはXML構文にエラーがある場合 ・データのインポートに伴うテーブル作成時 ・コピー、貼り付けでテーブル作成時 ・ファイル変換(.xlsxなど)に伴うテーブル作成時 ・アドオンテーブル(ver.17新機能)作成時 |
- その他、注意点
デフォルトフィールドの設定はクライアントマシン単位となります。複数人で開発を行っている場合は共通のDefaultFields.xmlを各クライアントマシンにいれておく必要があります。
XMLの記述についての公式情報はないようなので、DDRなどと比較して推測するしかありません。
ただしDDRで作成するXMLとは構造は少し異なっています。
1つのフィールドの部分を抜き出してDDRと比較すると図のようになります。
※修正についての公式情報はないため、DefaultFields.xmlファイルの修正はご自身の責任において行っていただきますようお願いいたします。