<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--日報?月報?
   1 2 3 4 5



さて、翌月になりました。
わたしは・・・あんまり工夫しなかったんで、一番最初に作ったクエリの抽出条件に、直接「年/月」と入力してました。
ええと、今は4月22日なんですけど、今月分を出そうと思います。

で、4月分ということで抽出条件を書き換えて、レポートをもう一度開きますと・・・。

ぎょ?

そっか・・・まだ月の半ばだから、こうなるのか・・・。
もとのテーブルにないデータは出てきません。4月23日からあとのデータはまだ発生してないので、レポートはこういう状態になります。

これでも良い場合もあると思います。
でも・・・いちおう、1ヶ月毎日印刷するつもりだから・・・4月30日まで30行分印刷したい・・・。

なんてこと、ありそうですか?
これから、そういう場合について考えてみましょう。

Accessのレポートは、ご存知のように、1レコード分のデザインを、レコード数分ぶん回して出力します。つまり、何行出てくるかは、基にしているテーブル(もしくはクエリ)に何レコードあるかによるわけです。

また、最初にお話しましたが、今、お店は8店舗あります。
これは「クロス集計クエリ」で、各テキストボックスが使っている「列名(フィールド名)」は、基はといえばテーブルの中に入力されてるデータです。
つまり・・・「アレフガルド店」の売上が1個もなかったら、アレフガルド店の列はクロス集計クエリ上からなくなってしまうわけです。
ないものは出せませんからね。

そうなると、このレポートでは、「アレフガルド店」の列のテキストボックスは基になるデータが見つからなくておろおろしてしまいます。
っていうか実際には「アレフガルド店というフィールドが見つかりません」というエラーになってしまいます。

クロス集計クエリではこういうことも想定して、ある程度列を固定することができますが、もし・・・「アレフガルド店がダーマ店に改名した」とか、「アレフガルド店が閉店した」とかいうことになったら、いちいちこのレポートを修正しないとなりませんよね。あるいは、「店舗が9店舗になった」とかいうことになったら・・・もうこのサイズの用紙には納まりきらず、2枚になっちゃいそうです。
でも、レポートを直すのが大変だからといって、店舗を改名したり増やしたり減らしたりしないようにする・・・なんてのは本末転倒です。要するに、一番最初に作り始める前に、そういう可能性があるかどうか、そういう場合はどうするか、洗い出しをしっかりやって、運用その他きちんと決めておく必要があるってことです。
あんまりにも店の名前がしょっちゅう変わるとか店の数が増えたり減ったりする場合は、レポートを作らずクロス集計クエリを開いた状態でがまんするとか、ピポットテーブルを使うとか、レポートにこだわらずカバーする方法は他にもあるはずです。

レポートもフォームも、そのテキストボックスに何を表示するかは、「コントロールソース」というプロパティで決めますからね。。。
クロス集計クエリを使ってレポート作る機会がありそうな方は、この辺もう一度おさらいしておいてくださいね。


で、4/30にちまで30行印刷したい場合は・・・。
実際、「データがないのに罫線だけ引く」とかいう方法が、ないわけじゃないんですけど・・・今回はもうちょっとお手軽な方法をお話します。

ダミーのテーブルを作ってそいつをかませます。

ちょっと原始的ですけど、その月の「日の一覧」みたいな感じのテーブルをべっこに作ります。
フィールドひとつだけの・・・。フィールド名は、[売上日付]ってしてみましたけど・・・あ、もしかしたら、[売上テーブル]のフィールド名とは別の名前にしたほうが、あとでわかりやすいかも・・・みなさんは[売上日付]じゃなくて[日付]とかにしておいてください。



で、最初に作った土台となるクエリのほうに小細工をします。

まず、今作ったテーブルを追加して、[売上日付]と[日付]をくっつけます。
で、そのときできる結合線をダブルクリックして結合プロパティを出し、「調整テーブルのすべてのレコードと、売上テーブルの同じ結合フィールドのレコード」を選びます。
上のような配置だと、2番目の結合方法になるかな・・・。

そうすると、上のように結合線に矢印がつきますね。これがミソなんですよ。
でも、このままじゃ動かないんです。結合方法が「調整テーブルが主体」に変わりましたから、抽出条件に使ってる[売上日付]を、[日付]に変えないといけません。

で、データシートビューに切り替えてみると・・・ありゃー。

4月23日とかの入力はまだ1件もないですから、ないところは真っ白状態になります。
今、[売上日付]で昇順になるようにしてますから・・・並べ替えを指定するなら[日付]の方にしないといけないですね。

これでこのクエリはオッケーのはず。クエリを保存して閉じましょう。

次に、クロス集計クエリのほうですが・・・行の見出しを[売上日付]ではなく[日付]の方に変えます。
でないと、4月23日以降の入力がまだないので、その部分7日間分くらい空欄の状態になっちゃいますからね。せっかくですから、日付だけは出力されるようにしましょう。

これでいけると思います。