|
>やはり基本ベースは所得率表テーブルだと思っております
>
>年1度の更新時期に所得率表テーブルを使用者が変更した時に
>対応できるようにしたい為です。
>
>どうにかなりませんか?
私が12481のレスで提示した
以上 扶養人数 所得税額
380,000 0 15,040
380,000 1 11,800
380,000 2 8,570
・・・・・・
383,000 0 15,280
383,000 1 12,050
383,000 2 8,810
というテーブルを使うことは、リレーショナルベータベースを使う限り、
避けられないと思います。
上例のようなテーブルを用意することは、それほど手間がかかることでは
ありません。
所得率表テーブルから追加クエリでレコードを追加するだけです。
その追加クエリですが、
所得率表テーブルの「以上」フィールドと「0人」ないし「7人」フィールドが
ともに長整数型だとし、
かつ、上例のようなテーブルのテーブル名が「T税額表」だとし、
そのテーブル構成が
ID オートナンバー(主キー)
以上 長整数型
扶養人数 バイト型
所得税額 長整数型
だとして、次のようなものになります。
INSERT INTO T税額表
(以上,扶養人数,税額)
SELECT 以上,0 AS 扶養人数,[0人] AS 税額
FROM 所得率表テーブル
UNION ALL
SELECT 以上,1 AS 扶養人数,[1人] AS 税額
FROM 所得率表テーブル
UNION ALL
SELECT 以上,2 AS 扶養人数,[2人] AS 税額
FROM 所得率表テーブル
・・・・・
UNION ALL
SELECT 以上,7 AS 扶養人数,[7人] AS 税額
FROM 所得率表テーブル
一つ気になるのは、所得率表テーブルの「0人」ないし「7人」フィールドの
フィールド名です。
フィールドの命名規則として、数字で始まるフィールド名はNGですから、
これが原因で何らかのエラーが生じ、追加クエリが実行できないかもしれません。
このエラーは、追加クエリだから出るというのではなく、
単なる選択クエリでも生じる可能性があります。
所得率表テーブルの「0人」ないし「7人」フィールドは、
フィールド名を変えておいた方が無難だと思います。
どうしても、上例のようなテーブルを作りたくないならば、
ユニオンクエリを使うという方法が考えられます。
所得率表テーブルから上例のようなレコードを返すクエリを
ユニオンクエリで作るという方法です。
もっとも、上例のようなテーブルを使う場合に比べて、
ユニオンクエリの処理が必要になる分、遅くなるのがデメリットです。
ユニオンクエリの作り方ですが、クエリデザイナでは作れないので、
SQLビューで作ります。
SQLビューに次のように入力してください。
SELECT 以上,0 AS 扶養人数,[0人] AS 税額
FROM 所得率表テーブル
UNION ALL
SELECT 以上,1 AS 扶養人数,[1人] AS 税額
FROM 所得率表テーブル
・・・・・
UNION ALL
SELECT 以上,7 AS 扶養人数,[7人] AS 税額
FROM 所得率表テーブル
なお、上記の「・・・・・」の部分は、
私がSQL文を逐一書くのが面倒なため、省略したものですので、
実際にSQLビューに書くときは、省略せずに書いてください。
T税額表を新規に作るにせよ、それをユニオンクエリで代用するにせよ、
あとの手順は、私の12781のレスの
>> その上で、従事者テーブルにプラスして
>>この関数を使った演算フィールド(フィールド名「基準額」)
>>を持つクエリを作り(クエリ名「Q一次」)、
>>Q一次と税額表とを、「基準額」フィールドと「以上」フィールド、
>>及び「扶養人数」フィールドで結合させたクエリを作ります
>>(クエリ名「Q二次」)。
のとおりです。
|
|