<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
 倉庫>レポートで使うカレンダー



calender2.zip--67kb  解凍後(calender2.mdb)308kb 

「カレンダーコントロール」っていうActiveXコントロールを、MS-Accessでも使えるので、それを使うのがいいとは思いますが、
あんまりレポートの印刷向きじゃない気がします。ねずみ色だしね。。。。

それに、汎用的なカレンダーを作るのって、すごく難しいんです。不可能と言ってもいいかもしれない。
祝祭日がネックになります。ハッピーマンデーだのなんだのかんだのと、毎年変わるじゃないですか。
お上が決めることですんで、どんなに立派なロジック組んでも、先のことはわかりません。
うるう年とかは、ある程度先までは、Windowsの「日付/時刻」なるものが制御してくれるのでなんとかなりますが、
祝祭日をきっかりやろうとなると、カレンダーを作ることは無理です。絶対。
っていうか・・・なんで無理なのかは、わかっていただけますよね・・・・・。

最近、けっこうこういう質問をいただくことがあったので、ちょっと挑戦してみました。
ただ、そんなこんなで、そのまんま使うことはできないので、下記の解説に目を通していただき、
使えそうだったら使ってみてください。


【解説】

上記のMDBファイルを開くと、中に、レポートが5つと、フォームが1つと、テーブルが1つあります。

レポート :
  カレンダ1  基本形(土日の色を変えただけの、今月のカレンダを印刷)

  カレンダ2  カレンダ1に、祝祭日を判定する処理を加えたもの
           土日はそれぞれ青、赤色になるようにしてありますので、祝祭日の場合はピンク色になるようにしてます。
           赤がいい場合は、色を変えてください。
           また、ある程度予測ができる範囲(今は2002年なので、とりあえず2003年の祝祭日情報は網羅)は、振り替え休日なども考慮しています。
           土曜日が祝祭日の場合は、色は青のままです。
           祝祭日が「何の日」なのかは、印刷しません(欄が狭いもんで・・・)

  カレンダ3  カレンダ2を、2ヶ月表示にしたもの。今月と、来月のカレンダを印刷

  カレンダ4  「設定フォーム」という名前のフォームで、表示させたい月を選択してから印刷するタイプ。
           ファームを開いてないで、レポートを開いた場合は、とりあえず今月と来月のカレンダを出す。
          「設定フォーム」からは、自由に年月を選べるようにしてますが、2010年とかのカレンダを出そうと思っても、祝祭日が正しく出るとは限りません。

  カレンダ5  祝祭日を、プロシージャの中で判定するのではなく、テーブルに入力しておくタイプ。
          「祝祭日テーブル」にその年の祝祭日を入力しておけば、その日はピンク色になります。
          会社とか学校とか独自の休みも色を変えたい場合は、この方法がベストかもしれないですね。
          基本的に、「祝祭日テーブル」にある日付は、ピンク色になります。


各レポートの詳細セクションに、下のように、標題が空白のラベルが42個、配置してあるものとします。

これらのラベルの名前(標題ではないぞ、ラベル名だ)は、C1、C2、C3・・・・・・・C42 という具合に、Cで始まる連番になってます。
(2ヶ月表示のレポートの場合は、来月分のラベルは D1、D2・・・となってます)
必ず、こういう名前のラベルが42個(2ヶ月表示の場合は42×2か月分で、84個)、作ってあることが、前提です。
なんで42個かというと・・・月末(31日)が日曜日の場合、前の週の日曜日(24日)と同じ欄に書いてあったりしますよね。 24/31 みたいな感じで。
でも、これがコンピュータの融通の利かないところで・・・それ、すごく難しいと思う。。。
なので、31日が日曜日で、6行目にずれ込んでも大丈夫なように、6行目を設けてるってわけです。
ほんとは、5行でいいはずだし、5行にしたいんですけどね・・・。

で、詳細セクションのPrint時に、今月の1日が何曜日だかを判定して、各ラベルに1、2、3・・・と日付けを代入していくプロシージャが動くようにしてあります。
もし、他のレポートにこのプロシージャをコピーして使う場合は、上のようなラベルをレポート上に作成して、Print時イベントにコピーするようにしてください。
ラベル名とラベル数さえ正しくなっていれば、直さなくてもそのまま使えると思います。
また、プロシージャの内容は、エディタで見ていただければコメント入れてありますので、参考にしていただけると思います。

レポートやフォーム上に配置できるコントロールの数は255個(256だったかしら)までだったと思うんで、12か月分のカレンダーをこの方法で作るのは多分無理です。
なので、もし、1年分のカレンダーを・・・なんて思ってる方は、カレンダーの画像をGIFとかJPEGとかの形式で作って、イメージコントロールとして貼り付けたほうが、絶対効率がいいです。こんなのに時間かけててはいかんですよ。難しそうなことは、他の方法で妥協するとか、そういう判断も大切っすよ。

(以上)




[倉庫入口]