1

VBA MSAccessプラットフォームに、困惑しているルーチンがあります。私がしているのは、レコードセットをループするときに金額フィールドを合計することだけです。

TempAmountという変数を宣言しました(ループするときに合計を保持します)。テーブルのフィールド名は、rsBilledというレコードセットではBilledAmountと呼ばれます。

ループが始まると、TempAmountはゼロになります。ループが進むにつれて、BilledAmountをTempAmountに追加します。

これがコードのモックアップです。

Dim TempAmount as Double
TempAmount = 0


While NOT rsBilled.EOF
   TempAmount = TempAmount + rsBilled.Fields("BilledAmount")

rsBilled.MoveNext

Wend

(次に、合計を格納する別のテーブルにTempAmountを書き込みます。)

これですべてが正常に機能します。TempAmountとBilledAmountが反対の量であり、ゼロを生成する場合を除きます。
つまり、TempAmountが15.25でBilledAmount = -15.25の場合、結果はゼロになります。しかし、それは起こりません。代わりに、2.123423523E-10のようなワイルドな拡張表記値を取得します。

繰り返しますが、これは、正の値が反対の負の値に追加されたために結果がゼロに等しくなる場合にのみ発生します。

手がかりはありますか?

4

2 に答える 2

3

として宣言TempAmountしたdoubleので、固定小数点数ではなく浮動小数点数を扱っています。

代わりに宣言TempAmountcurrencyます。

于 2013-02-22T18:34:15.447 に答える
1
Dim TempAmount as Double 
TempAmount = 0

While NOT rsBilled.EOF 
TempAmount = Round(TempAmount,4) + Round(rsBilled.Fields("BilledAmount"),4)
rsBilled.MoveNext
Wend
于 2013-02-22T18:35:52.027 に答える