FireDAC.Stan.Option.TFDFormatOptions.Round2Scale

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

property Round2Scale: Boolean read GetRound2Scale write SetRound2Scale  stored IsRSS default False;

C++

__property bool Round2Scale = {read=GetRound2Scale, write=SetRound2Scale, stored=IsRSS, default=0};

プロパティ

種類 可視性 ソース ユニット
property published
FireDAC.Stan.Option.pas
FireDAC.Stan.Option.hpp
FireDAC.Stan.Option TFDFormatOptions

説明

値の丸めを制御します。

Round2Scale プロパティを使用すると、FireDAC は、数値および時間の値を、データベース内で指定されたサイズに丸めるかどうかを、制御することができます。デフォルト値は False です。

True の場合、丸めが実行されます。丸めはクライアント側で、アプリケーションが値を、数値/時間/日時型のフィールドに割り当てるときにのみ、発生します。丸めには、対応する TFDDatSColumn.Scale 値を使用します。数値の場合、小数点以降の桁数です。時間の場合、サポートされる最大精度を、ミリ秒で表します。

Round2Scale プロパティを True に設定すると、アプリケーションは、丸めで発生するエラーを避けることができます。

以下のシナリオについて考えてみましょう: アプリケーションには、UpdateOptions.LockMode = lmOptimistic が設定されており、DATE フィールドを持つ Oracle テーブルに対して、シンプルな SELECT の ADQuery があります。Oracle での DATE データ型の精度は、1 秒です。ここで、新しいレコードを追加し、Now() の結果を DATE フィールドに割り当て、その変更をデータベースに送信します。クライアント レコード バッファは、値を数ミリ秒で格納する一方、データベースは値をミリ秒かからず格納します。レコードの編集を試みます。その前に、ロックが実行されます。しかし、FireDAC は、クライアント バッファからのフィールド値と、データベースからフェッチしてきたばかりの値の比較に失敗します。その結果、"DApt-400" 例外が発生します。

ところが、Round2ScaleTrue に設定されている場合、FireDAC はクライアント値を秒まで丸めてるので、比較に成功します。


関連項目