電子書籍の厳選無料作品が豊富!

お世話になります。
初めて質問させていただきます。

下記のように、作家さんへ支払った原稿料の明細を、
作家別、さらに支払日別にグループ化し、
各支払日のグループフッターで計算した源泉所得税を
作家のグループフッターで合計したいのですが、計算されません。

=============『詳細』
作家 書籍名 支払日 原稿料 
=============『支払日グループフッター』
="原稿料計"__原稿料合計 ←=Sum([原稿料])
="源泉税"__源泉税 ←=[原稿料計]*0.1
=============『作家グループフッター』
="原稿料総計"__原稿料合計 ←=Sum([原稿料])
="源泉税総計"__源泉税合計 ←=Sum([源泉税])

以前に似た質問をされた方がいらしたのですが
その際の解決方法を試してみてもうまくいきませんでした。
試してみたのは、下記の方法です。
作家グループフッターのフォーマット時イベントプロシージャに
書き込みました。
----------------
Private Sub グループフッター
Tmp = Tmp + Me.源泉税
Me.源泉税総計 = Tmp
-----------------
この方法だと、源泉税総計の欄に、最後の支払日グループの
源泉税の額だけがが表示されてしまいました。

つたない説明で申し訳ありませんが
どなたか分かる方がいらっしゃいましたら
よろしくお願いします。

A 回答 (4件)

>各支払日のグループフッターで計算した源泉所得税を


>作家のグループフッターで合計したいのですが、計算されません。

結局は、原稿料総計*0.1になるのでは?

元のテーブルのデータから集計できるので、
支払日のグループフッターの集計を利用する必要はないかも。

=============『作家グループフッター』
="原稿料総計"__原稿料合計 ←=Sum([原稿料])
="源泉税総計"__源泉税合計 ←=Sum([原稿料])*0.1


>作家グループフッターのフォーマット時イベントプロシージャ

念のため、このイベントに関する注意点。
このイベントプロシージャは複数回呼ばれる可能性があります。

FormatCountプロパティのヘルプをご覧下さい。

ヘルプには、FormatCount プロパティで何回呼ばれたか調べられる
様なことが書いてありますが、たまに不可解な現象が発生します。

http://www.penhagi.com/access/ota2003/3133.htm

このイベントプロシージャの、呼ばれる順序や回数を、
把握するのは難しいです。

下記のような処理で、正しく計算できる場合が多いですが、
私自身は信用していないので、この方法は使いません。(^^;

Dim Tmp As Variant

Private Sub 作家グループフッター_Format(Cancel As Integer, FormatCount As Integer)
 If FormatCount = 1 Then
  Me.源泉税総計 = Tmp
  Tmp = 0
 End If
End Sub

Private Sub 支払日グループフッター_Format(Cancel As Integer, FormatCount As Integer)
 If FormatCount = 1 Then
  Tmp = Tmp + Nz(Me.源泉税)
 End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2008/01/27 21:03

#1です。


> 結局は、原稿料総計*0.1になるのでは
数学的にはそうだと思いますが、円未満切り捨てを考えると
合計値の0.1だと微妙に異なることもあり得ます。
> このイベントプロシージャは複数回呼ばれる可能性があります。
確かにそうですね。

基本的に源泉徴収は書籍別、日別に算出されるべきものと考えられるので、
いっそのこと、原稿料テーブルからクエリを作成し、
このクエリで、Int(原稿料*0.1)の源泉税額フィールドを作りだし、
このクエリをレポートのレコードソースとしたうえで、
この源泉税額を各グループフッタで合計させた方が安全かも...
    • good
    • 0
この回答へのお礼

皆様早速のご回答本当にありがとうございます。
おかげさまで正しく計算することができました!
vizzarさんのご回答のとおりやってみたところ、
作家グループフッターだけが次のページになった際、
正しく計算されませんでした。
そこでvenzouさんのご回答とおりやってみたところ、上記の現象も出ず正しく計算されました。
やはり
> このイベントプロシージャは複数回呼ばれる可能性があります。
が関係しているのでしょうか。

また源泉税の算出の方法ですが、私の説明が足りずに申し訳ございません。
支払日ごとに算出するのですが、その際支払金額が100万円を超えている場合は、100万円に対しては0.1、100万円を越える部分には0.2を
かけることになっています。
そのため作家グループフッターの原稿料合計に0.1を掛けるわけにはいきませんでした。
お二人とも本当にありがとうございました。

お礼日時:2008/01/27 21:02

#1です。

変数名の記述に誤りがありました。

誤:
1.変数Tempをレポートの定義部で宣言する。
正:
1.変数Tmpをレポートの定義部で宣言する。
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2008/01/27 21:03

> この方法だと、源泉税総計の欄に、最後の支払日グループの


> 源泉税の額だけがが表示されてしまいました。
それは当たり前です。
各日付のグループフッタで積算していないからです。
1.変数Tempをレポートの定義部で宣言する。
2.日別のレポートフッタのフォーマット時イベントプロシージャに、
  Tmp = Tmp + Me.源泉税
3.作家別のレポートフッタのフォーマット時イベントプロシージャに、
  Me.源泉税総計 = Tmp
  Tmp = 0

で、如何でしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2008/01/27 21:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!