• ベストアンサー

ACCESSの関数

知人に頼んで作ってもらった、請求管理のデータベースがあります。 請求金額、入金金額、その差額が一覧で見れるようになっていますが 差額が四捨五入できておらず、自分でどうにか四捨五入をして整数で 分かるように設定をし直しました。(ACCESSに関してはド素人です) その時入力したのが 差額: Nz([入金合計]-[請求合計]) でした。 その後知人が修正したものを持って来てくれたので入れ替えたのですが 次は小数点の関係からか、なぜか1円誤差が出るようになりました。 自分でしたときは大丈夫だったので、関数を確認したところ 上記nz部分が、 fix となっていました。 誤差が出るのはややこしいので、Nzに戻そうかと思うのですが 何か問題があるか教えてください。 ヘルプでfixの説明を読みましたが、いまいち意味がわかりませんでした。 どなたかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.3

差額:Nz([入金合計]-[請求合計]) これも、おかしな式ですね。 差額:Nz([入金合計])-NZ([請求合計]) なら、ヌルエラー回避としては理解できます。 しかし、そもそも、[入金合計]や[請求合計]に小数点が発生している訳がないでしょう。 10円50銭なんて請求も入金も世の中にはないですからね。 ですから、問題は、ここじゃないですね。 [イミディエイト] ? (1230 * 1.05) * 3 3874.5 例えば、こういう総額方式での単価と数量の計算箇所があるんじゃないのですか? ここで、 3874.5 -> 3875 と請求額を修正しているかどうかじゃないですか? しかし、上述の計算の仕方は信頼できませんよ! ? (Ccur(1230) * Ccur(1.05))*3 3874.5 がお勧めです。 ? Rounds((Ccur(1230) * Ccur(1.05))*3, 切り捨て) 3874 ? Rounds((Ccur(1230) * Ccur(1.05))*3, 切り上げ) 3875 と、この段階で関数を使って整数化します。 書式指定で見かけ上だけ整数化していても問題は解決しませんよ。 なお、取引先100社は、全て切り捨てしていますね。 Access2002 までは Excel みたいな RoundDown みたいな関数がないです。 ですから、そこは、上記のように Rounds関数を使うしかないです。 ' ---------------------------------------------------------------------------------------- ' 共通記号定数 ' ---------------------------------------------------------------------------------------- Option Compare Database Option Explicit ' ' Rounds関数用 ' Public Const 四捨五入 = 0 Public Const 切り捨て = 1 Public Const 切り上げ = 2 ' Public Function Rounds(ByVal M As Currency, _             ByVal A As Integer, _             Optional D As Integer = 0) As Variant     Rounds = Sgn(M) * Fix(Abs(M) * 10 ^ D + Abs((A = 0) * 0.5@ + (A = 2) * (Int(M * 10 ^ D) <> (M * 10 ^ D)))) / 10 ^ D End Function

noname#68919
質問者

お礼

お礼が遅くなり申し訳ございません。 大変詳しく解説して頂き、有難うございます。 参考に一度、がんばってみたいと思います。 他に回答を下さった方もありがとうございました。 ここで代表してお礼申し上げます。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

小数点以下第1位の四捨五入でいいなら CLng(Nz([入金合計])-Nz([請求合計]))  Clng関数は 数値範囲2,147,483,648 ~ 2,147,483,647で小数点以下は四捨五入されます。

  • Qoo1985
  • ベストアンサー率22% (131/570)
回答No.1

fixは小数点以下切捨てですね。 どうしたいのか分かりませんが、下記を参考にすれば良いかと。

参考URL:
http://www.relief.jp/itnote/archives/002655.php

関連するQ&A