|
>給料明細クエリの所得税
>にどのような式を組み込めばよいですか?
アクセスには、エクセルにおけるHLookUp関数と同様の働きをする関数はありません。
また、発想の方向性が少しズレていると思います。
「式を組み込む」という発想がアクセス的ではありません。
エクセルでは、集計ないし計算結果を表示するセルに
どのような式ないし関数を設定するかが勝負となりますが、
アクセスでは、どのテーブルとどのテーブルとを、どのように結合させるか
という発想が中心になります。
そこで、給料明細クエリをどのように作るかですが、その前提として、
所得率表テーブルのテーブル構成がまずいと思います。
エクセルでは、表が所与のものとしてあって、
これをどのように集計・計算していくかという視点から、
関数ないし計算式を考えていきます。
これに対し、アクセスでは、集計・計算しやすいようにテーブルを作ります。
アクセスは、条件に合うレコードを見つけることは大得意ですが、
条件に合うフィールドを見つけるということはできません。
扶養人数が3である場合に、
所得率表テーブルの「3人」フィールドを見つけてくるということ
ができないのです
(なお、VBAを駆使すればできないことはありませんが、パフォーマンスは悪くなります)。
そのため、所得率表テーブルは次のような構成にします。
以上 未満 扶養人数 所得税額
380,000 383,000 0 15,040
380,000 383,000 1 11,800
380,000 383,000 2 8,570
・・・・・・
383,000 386,000 0 15,280
383,000 386,000 1 12,050
383,000 386,000 2 8,810
これに対し、テーブルが見づらくなるという批判が出てくるだろうと思います。
しかし、テーブルは、レコードを格納するたのオブジェクトであって、
レコードを表示させるためのオブジェクトではないので、
人間にとっての見やすさを考慮する必要はありません。
むしろ、コンピュータにとっての使いやすさこそを優先させたテーブル構成
としなければなりません。
また、扶養人数が横に展開していくような形でレコードを表示したいなら、
クロス集計クエリを使えば、そのような形でのレコード表示が可能です。
そして、給料明細クエリにおける結合条件を
従事者テーブル.控除後金額 >= 所得率表テーブル.以上
AND 従事者テーブル.控除後金額 < 所得率表テーブル.以下
AND 従事者テーブル.扶養人数 = 所得率表テーブル.扶養人数
とします。
不等号を使った結合条件は、クエリ・デザイナでは作れなかったと思います。
なので、給料明細クエリSQLビューを使い、
SQL文を記述して作成してください。
なお、結合条件に不等号を使うと、クエリが極端に遅くなるという印象です。
なので、できたら、上記の結合条件は避けた方が無難ではないかと思います。
これに関し、国税庁のホームページ中に
ht tp://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/shikata2015
/pdf/06.pdf
というページがあります。PDFのページですが、その14ページに
「(平成27年分の年末調整のための算出所得税額の速算表)」という表が
あります。
この表による計算をユーザー関数化したら、
所得率表テーブルなど不要になると思います。
上述のアクセスとエクセルの対比のところに記載したことと
ちょっと矛盾しますが、
このようなユーザー関数化も一法ではないかなと思います。
|
|