デフォルトフィールドの設定が書かれてあるXMLファイルを編集すると、自分好みのデフォルトフィールドを定義することが出来ます。
それぞれ、下記場所にデフォルトフィールドの設定が書かれています。
Windowsの場合
<drive>:\Program Files\FileMaker\FileMaker Pro 17 Advanced\Extensions\Japanese¥DefaultFields.xml
macOSの場合
/Applications/FileMaker Pro 17 Advanced/FileMaker Pro Advanced.app/Contents/Resources/ja.lproj/DefaultFields.xml
まず、中身を見てみましょう。
DefaultFields.xml
<?xml version="1.0" encoding="utf-8"?>
<FMDefaultItems version="1" source="17.0.1" membercount="1">
<DefaultFields membercount="5">
<Field id="1" name="主キー" fieldtype="Normal" datatype="Text" comment="このテーブル内の各レコードの固有の識別子">
<AutoEnter type="Calculated" prohibitModification="True" overwriteExisting="True" alwaysEvaluate="False">
<Calculated>
<Calculation>
<Text><![CDATA[Get( UUID )]]></Text>
</Calculation>
</Calculated>
</AutoEnter>
<Validation type="OnlyDuringDataEntry" allowOverride="False" notEmpty="True" unique="True" existing="False"></Validation>
<Storage autoIndex="True" index="None" global="False" maxRepetitions="1">
<LanguageReference name="Unicode" id="2"></LanguageReference>
</Storage>
<TagList primary="True">#_FMI_0 </TagList>
</Field>
<Field id="2" name="作成情報タイムスタンプ" fieldtype="Normal" datatype="Timestamp" comment="各レコードが作成された日付と時刻">
<AutoEnter type="CreationTimestamp" prohibitModification="True"></AutoEnter>
<Validation type="OnlyDuringDataEntry" allowOverride="False" notEmpty="True" unique="False" existing="False">
<Strict>FourDigitYear</Strict>
</Validation>
<Storage autoIndex="True" index="None" global="False" maxRepetitions="1"></Storage>
<TagList>#_FMI_0 </TagList>
</Field>
〜〜【略】〜〜
</DefaultFields>
</FMDefaultItems>
XMLファイルを眺めていると、
<Field id="1" name="主キー"【略】>〜</Field>
が1フィールドの単位だと気付きます。
その中にフィールドの設定が入っているはずなので分解していくと
入力値の自動化:<AutoEnter 【略】>〜</AutoEnter>
入力値の制限 :<Validation 【略】>〜</Validation>
データの格納 :<Storage 【略】>〜</Storage>
となります。
後は、それぞれの中身を掘り下げていくだけですね。
Field
フィールドの基本的な要素を設定する。
id:内部的に持ってるID、上から順番に採番されている
name:フィールド名
fieldtype:フィールドのタイプ、計算、集計
datatype:数字やテキスト、日付等を指定
comment:フィールドのコメント欄
fieldtype="Calculated"の場合は
<Calculation>
<Text><![CDATA[Get( UUID )]]></Text>
</Calculation>
と、計算式を書くタグが増えます。計算式は[]内に記述します。
AutoEnter(入力値の自動化)
type:作成日や修正時刻等を指定
下記パターンがある
CreationDate
CreationTime
CreationTimestamp
CreationName
CreationAccountName
-
ModificationDate
ModificationTime
ModificationTimestamp
ModificationName
ModificationAccountName
-
Calculated
type="Calculated"の場合は
<Calculated>
<Calculation>
<Text><![CDATA[Get( UUID )]]></Text>
</Calculation>
</Calculated>
と、計算式を書くタグが増えます。
prohibitModification:データ入力時の値変更の禁止
overwriteExisting:フィールドに既存の値が存在する場合は置き換えない
alwaysEvaluate:全ての参照フィールドが空の場合評価しない
Validation(入力値の制限)
type:このフィールドの入力値を制限するオプション
allowOverride:データの入力時にユーザによる上書きを許可する
notEmpty:空欄不可
unique:ユニークな値
existing:既存値
message:制限値以外の入力時にカスタムメッセージを表示
メッセージ内容は<Message></Message>内に記述
数字、西暦4桁の日付、時刻は下記タグ内に記述
<Strict>Numeric</Strict>
<Strict>Time</Strict>
<Strict>FourDigitYear</Strict>
Storage
autoIndex:必要時に索引を自動設定
index:索引設定
global:グローバル格納
maxRepetitions:最大繰り返し数
デフォルト言語の設定は下記タグで記述。id要素は不明。ただ、ここを指定しなくてもデフォルトの言語になるので問題はない。
<LanguageReference name="Japanese" id=""></LanguageReference>
DefaultFields.xml内ではプライマリキーがUnicodeで設定されてある。「Thai」と指定するとタイ語になる。言語設定のパラメータをもっと知りたい場合は、DDR(データベースデザインレポート)から判断すると解る場合が多い。XMLの記述は異なるが、要素の記述は同じ場合が多い。
最終的なXMLファイルの記述
<?xml version="1.0" encoding="utf-8"?>
<FMDefaultItems version="1" source="17.0.1" membercount="1">
<DefaultFields membercount="5">
【ここにフィールドの設定XML】
</DefaultFields>
</FMDefaultItems>
とすれば良い。<DefaultFields membercount="5">の5はフィールド数なので、合わしておく。ただ、検証ではここの数字が異なっていてもフィールドは作成される。
作成したファイルを下記フォルダにアップ配置すればOK。
◆Windows
<drive>:\ProgramData\FileMaker\Shared
◆macOS
/Users/Shared/FileMaker/Shared
元々の設定が書かれたファイルを修正しても同じ動作ですが、元々の設定は保存しておいた方が良いと思いますので、上記フォルダ内に配置しましょう。
まとめ
一度作成すれば、そうそう変更する必要はないと思われるファイル。
検証時に判明したが、「DefaultFields.xml」ファイルは修正した後、FileMaker Proを再起動する必要はない。なので、この動作を利用して設定箇所が多いフィールドを効率的に作成することも出来るかもしれない。
ここまで検証に使用したファイル「デフォルトフィールド作成ツール.fmp12」を下記からダウンロード出来ます。FileMaker Proの画面で設定すると「DefaultFields.xml」の内容が生成されます。不明なパラメータもありますし、厳密なエラー判定もしていないので自己責任でご使用下さい。
解説動画はこちら
※この記事はシリーズです まとめページはこちら
Comments