Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


805 / 9994 ←次へ | 前へ→

【12498】Re:アクセス ユニオンクエリ?について
回答  かるびの  - 14/4/14(月) 0:18 -

引用なし
パスワード
    クロス集計クエリを使うことになります。
ただ、私は、クロス集計クエリをそれほど使ったことがなく、
またレポートもそれほど得意ではありません。
なので、私にもよくわからないというのが正直なところです。

 私にわかる範囲で述べます。

 クロス集計クエリのベースとなるクエリですが、
次のフィールドを持つものである必要があると思います。
   月  
   個人番号
   種類    (基本給か社会保険かが格納される)
   人別種類  (例えば、「121314社会保険」などというデータ。
          個人番号と、基本給か社会保険かということを
          単純につなげただけのもの)
   金額    (基本給額と社会保険料額が格納される)

 例示されたクエリからクロス集計クエリのベースとなるクエリを作るとすると、
次のようなSQL文になります。
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "基本給" AS 人別種類
    ,基本給 AS 金額
 FROM [4月]
 UNION ALL
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "社会保険" AS 人別種類
    ,社会保険 AS 金額
 FROM [4月]
 UNION ALL
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "基本給" AS 人別種類
    ,基本給 AS 金額
 FROM [5月]
 UNION ALL
 SELECT 該当月
    ,個人番号
    ,種類
    ,CStr(個人番号) & "社会保険" AS 人別種類
    ,社会保険 AS 金額
 FROM [5月]
 ・・・・・・・・

 SQL文はうんざりするほど長いものとなりますね。
 SQL文の長さには制限があるので、
ひょっとしたらそれにひっかかってしまうかもしれません。

 それから、クエリ名が「4月」というのは、よくないですね。
 数字で始まるオブジェクト名は御法度です。

 無理にユニオンクエリを作るよりも、
「4月」クエリの元になったテーブルがきちんと作られたものであれば、
そのテーブルからクロス集計クエリを作った方がいいです。

 きちんと作られているとは、
月別にテーブルを作るなどということは
データベースではやってはいけないことの代表例ですから、
そのようなテーブルではないということです。

 部署と氏名は、
個人番号が決まれば、部署も氏名も決まるという性質のものなので、
クロス集計クエリに含ませる必要はありません。
クロス集計クエリを作った後、
そのクロス集計クエリと、部署や氏名が格納されたテーブルとを結合させた
選択クエリを作ることになると思います。

 経費の扱いがよくわかりませんね。
 人が決まれば、どの経費に該るのかが決まるという性質なのであれば、
経費は部署や氏名と同様に扱えばいいです。
 これに対し、人が決まっても、どの経費に該るのかは決まらない、
例えば、山田さんの場合に、
経費がABCであることもDEFであることもあるということであれば、
上記の「人別種類」フィールドの値を、
個人番号と基本給か社会保険かと経費とをつなげたものとする
(例えば、「121314社会保険GHI」)必要が出てきそうです。
 
 クロス集計クエリは、次のようなものとなります
(ただい、経費の扱いについては前者だとします。)。
   個人番号 種類   人別種類     4月  5月  6月
   123456  基本給  123456基本給   50000 60000 60000
   123456  社会保険 123456社会保険   2000  3000  3000
   121314  基本給  121314基本給   50000 60000 60000  
   121314  社会保険 121314社会保険   2000  3000  3000
   789101  基本給  789101基本給   60000 80000 80000
   789101  社会保険 789101社会保険   3000  4000  4000

 このクロス集計クエリと、部署、氏名、経費などの情報をもったテーブルとを
結合させて選択クエリを作り、
この選択クエリをレコードソースとするレポートを作ります。
 レポートでは、適宜グループを設定した上で、レイアウトを工夫することになると思います。
147 hits

【12494】アクセス ユニオンクエリ?について ぶんぶん 14/4/11(金) 18:19 質問[未読]
【12498】Re:アクセス ユニオンクエリ?について かるびの 14/4/14(月) 0:18 回答[未読]

805 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078191
(SS)C-BOARD v3.8 is Free