![]() |
||
<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とかの形式で作って、イメージコントロールとして貼り付けたほうが、絶対効率がいいです。こんなのに時間かけててはいかんですよ。難しそうなことは、他の方法で妥協するとか、そういう判断も大切っすよ。
[倉庫入口] |