| 
    
     |  | >やはり基本ベースは所得率表テーブルだと思っております >
 >年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二次」)。
 のとおりです。
 
 |  |