パソコン情報

【Access】クロス集計クエリから列を別テーブルの値によって変化させられるか?

ココに注意

クロス集計クエリは便利な反面、くせすごです!

 

やりたい事

 

やりたい事

「User」がデータ入力したテーブル「Clearing_data」とそれに紐づいた「Category」の「仕分」毎に集計を出したい

という事になります。

そして、その集計をレポートにして下記のようにしたいというのが目的になります。

 

期間を絞ったテーブル作成

今回の題材とは関係ありませんが、「Clearing_data」には、月日というフィールドがあり、その期間を新しいテーブルとして作成しました。

期間の方は、フォームの非連結のテキストボックスから設定できるようにしました。

この期間を絞ったテーブル「job_petty_payment」というテーブルから、ID「User」と仕分「分類2」でクロス集計をしました。

 

クロス集計クエリで値の無い列が出ない!?

上のようなクロス集計クエリを作成して、ほぼ必要なデータ内容になりました。

が、しかし・・・

ココに注意

値がない列が「0」で出てこない!

 

 

この方法から、「クエリ列見出し」と言う場所に、表示させたい列を入力しました。

 

 

これで、値が無い列でも表示することができるようになりました。

 

列が変動する場合は・・・(無理)

今回の仕組みでは、「Category」テーブルに仕分のマスターとして変動しても良いように備えました。

が、しかし・・・

「Category」テーブルに新たに追加した場合は、列として変動してくれません。

つまり、「クエリ列見出し」に追加した項目を追加しないと列として出てくれないのです。

本当は、「Category」マスタの内容に連動して、列が変動して欲しかったのですが、今の自分のスキルでは難しいのです。

結局、列固定にて、

ココがダメ

「Category」マスタ変動時には、手動で、「クエリ列見出し」を修正する

ことで納めました。

 

印刷プレビューでの不具合

数値の3桁カンマがグレーアウト

クロス集計クエリをレポートにしましたが、数値の3桁ごとのカンマを入れようとしたら、グレーアウトになっていて変更ができません。

クロス集計で出した値の合計の方は、問題なくカンマ変更をすることができたのに不思議です。

ココがポイント

Val関数を使ったらグレーアウトが改善されました!

 

Val関数

文字列に含まれる数値を、適切なデータ型の数値で返します。

 

今さながら、ひとつひとつを改善させていくしかないですね。

 

合計がSUM関数でエラー

そして、もう一つの印刷プレビューでの不具合は、クロス集計での、合計がSUM関数でエラーになるのです。

クロス集計から演算して値として出された値に関しては、SUM関数を使えば、レポートフッターにて、合計が表示されました。

しかし、クロス集計から合計として出した「合計金額」をSUM関数にて総合計を出そうとするとエラーになって計算してくれません。

これは、Accessの仕様なのかなーーーって思う事にしました。

結局、演算値をSUMで合計して総合計をだしました。