Data.DB.TField.AutoGenerateValue
Delphi
property AutoGenerateValue: TAutoRefreshFlag read FAutoGenerateValue write FAutoGenerateValue default arNone;
C++
__property TAutoRefreshFlag AutoGenerateValue = {read=FAutoGenerateValue, write=FAutoGenerateValue, default=0};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
property | published | Data.DB.pas Data.DB.hpp |
Data.DB | TField |
説明
ユーザー入力ではなくサーバーで項目の値を生成できるかどうかを指定します。
AutoGenerateValue プロパティを使用すると,項目の値をデータベースでいつ作成するかを指定できます。作成される項目には,自動インクリメント項目およびデフォルト値が設定されている項目などがあります。
データベースドライバによっては,サーバーが自動的に生成した値をどの項目に設定できるかを判別できません。つまり,更新を適用するとトラブルが生じる危険があります。このような場合には,AutoGenerateValue プロパティを設定して,アプリケーションからこの情報を取得できます。AutoGenerateValue プロパティを使用すると,項目が自動インクリメント項目(arAutoInc),デフォルト値を含んでいる項目(arDefault),または自動生成されていない項目(arNone)のいずれであるかを識別できます。
AutoGenerateValue は常に必要なわけではありません。項目にデフォルト値または自動インクリメント値が含まれていることを示すメタデータがドライバから供給された場合,AutoGenerateValue プロパティの値が arNone である項目はさらに更新されることがあります。しかし,すべてのドライバがこのメタデータを供給するわけではないので,項目の情報を供給することが適切です。
データベースに値を生成させたすべての項目に対して AutoGenerateValue を使用する場合は,データベースにより自動生成された値を持つ各項目の arAutoInc または arDefault に AutoGenerateValue を設定することが必要です。これは,レコードが登録されたときにアプリケーションがただちに問い合わせを実行して自動生成された値をフェッチするからです。自動生成された項目の AutoGenerateValue を arNone の設定にしておくと,この問い合わせは項目に空白値が指定されたレコードを探すので,正しいレコードを見つけることができません。
警告: AutoGenerateValue は,自動生成された項目の値がキー設定項目のものであるときに失敗する場合があります。これは,新しい項目値を再フェッチする問い合わせが登録されたばかりのレコードを常に一意に特定できるとは限らないからです。
メモ: 項目のデータセットを開いている場合に AutoGenerateValue プロパティを変更しようとすると,例外が生成されます。したがって,AutoGenerateValue は静的項目コンポーネントに対してのみ,つまりデータセットが閉じている場合にのみ使用できます。