使用しているレポート ツールの精度に問題があります。問題は、その場で TADODataset からデータを読み込んでいるが、ftBCD フィールドを double に変換していることです。
これにより、レポート レベル (合計など) で操作を実行するときに丸め誤差が発生します。
これが起こらないように、通貨フィールドを ftBCD ではなく ftCurrency として指定したいと思います。
次のようにフィールドを作成すると:
TFieldDef.Create( ADODataset.FieldDefs,
'test',
ftCurrency,
0,
True,
0
);
ADODataset.CreateDataSet;
時計を使用するとADODataset.Fields[0].DataType
、値が ftBCD であることがわかります。
ftBCD フィールドとして割り当てられないように、TADODataset 内で ftCurrency フィールドを明示的に指定する方法はありますか?