デフォルト値の指定(FireDAC)

提供: Appmethod Topics
移動先: 案内検索

データの編集(FireDAC) への移動

OnNewRecord イベント ハンドラの使用

Object Pascal で新しいレコード フィールドにデフォルト値を割り当てる場合には、OnNewRecord イベント ハンドラを使用する方法が標準的です。このイベント ハンドラは、自動インクリメント フィールドや詳細レコード リンク フィールドに値が設定され、自動デフォルト値が割り当てられた後で起動されます。このイベント ハンドラで上記の値をオーバーライドしたり、複雑なカスタム ロジックを使って初期値を割り当てることができます。

このイベント ハンドラは、任意の時点でデータセットに割り当てることができます。

デフォルト式の値の指定

FireDAC では、TField.DefaultExpression プロパティに割り当てることができます。この式は、Insert/Append メソッド呼び出しの中で一度だけ評価され、該当するフィールドに初期値として割り当てられます。この値は、後でアプリケーションによってオーバーライドすることができます。フィールドの TField.FieldKindfkInternalCalc であれば、DefaultExpression を使ってフィールド値が計算されます。

データセットが閉じているときに DefaultExpression フィールドに値が割り当てられると、それは自動的に適用されます。データセットが開いている場合には、UpdateAttributes メソッドを呼び出して変更を適用してください。以下に例を示します。

FDQuery1.Open;
...
FDQuery1.FieldByName('ObjGUID').DefaultExpression := 'NEWGUID()';
FDQuery1.UpdateAttributes;

FireDAC がデータベース ディクショナリから列のデフォルト式を自動的に取得することはありません。式を割り当てる最も簡単な方法は、設計時にフィールド エディタを使用することです。

FieldsEditorAssignExpr.png

デフォルト値の更新

以下の DBMS については、結果セットの列にデフォルト値が設定されていることを FireDAC が自動的に認識します。

DBMS 説明
Firebird fiMetaFetchOptions.Items に含まれていて、ExtendedMetadataTrue である
InterBase fiMetaFetchOptions.Items に含まれていて、ExtendedMetadataTrue である
MySQL
PostgreSQL fiMetaFetchOptions.Items に含まれていて、ExtendedMetadataTrue である
Teradata Database fiMetaFetchOptions.Items に含まれていて、ExtendedMetadataTrue である


列にデフォルト値が設定されていると FireDAC が認識したら、TField.AutoGenerateValuearDefault に設定されます。そうでない場合には、AutoGenerateValue を手動で設定することができます。新しいレコードを追加したときに該当するフィールドの値が割り当てられていなければ、FireDAC は新しいレコードを送信した後でフィールド値を自動的に更新します。