MS Access Tips/Sample and VBA and Blog customize etc...

レポートでガントチャート

スケジュールや勤務シフトなどを視覚的に表現するためにガントチャートというもを使うことがあります。これをレポート上で表現する方法を紹介します。

今回は、勤務予定テーブルをもとに下記のようにレポートに出力するのサンプルです。

レポートでガントチャート

Printメソッド、Lineメソッドで出力してますので、それらの使用例としても参考になると思います。

難易度:

ソースのテーブルは下記のようなものです。

名簿
名簿ID 名前 フリガナ
1 森上 偉久馬 モリウエ イクマ 32896
2 葛城 孝史 カツラギ コウシ 6697881
3 加藤 泰江 カトウ ヤスエ 13421619
4 川村 匡 カワムラ タダシ 88888
5 松沢 誠一 マツザワ セイイチ 52377
6 成宮 真紀 ナルミヤ マキ 8421631
7 山本 雅治 ヤモト マサハル 12615935
8 青木 俊之 アオキ トシユキ 65280
9 小川 さよ子 オガワ サヨコ 16711808

色フィールドの値は、背景色プロパティに設定するものと同じです。
入力フォームで色を設定するときは、[色の設定] ダイアログを表示する方法 で紹介されている方法を利用すると簡単です。

勤務予定
ID 日付 名簿ID 開始時刻 終了時刻
1 2009/03/01 1 10:00:00 15:00:00
2 2009/03/01 2 8:00:00 12:00:00
3 2009/03/01 3 12:00:00 18:00:00
4 2009/03/01 4 6:00:00 12:00:00
5 2009/03/02 3 6:00:00 10:00:00
6 2009/03/02 3 11:00:00 15:00:00
7 2009/03/02 4 7:00:00 14:00:00
8 2009/03/02 6 15:00:00 20:00:00


この2つのテーブルよりクエリを作成して名簿IDでリンクして、それをレポートのレコードソースにします。

並べ替え/グループ化の設定 で、日付、名簿ID でグループ化して、日付のグループヘッダー、名簿IDのグループフッターを表示させます。

ページヘッダーには、日付 を配置して、書式は、yyyy\年mm\月

日付ヘッダーには 日付 を配置して、書式は、dd (aaa)

詳細セクションには、開始時刻、終了時刻、色 を配置して、可視はいいえとします。

名簿IDフッターには、名前 を配置します。

レポートのイベントプロシージャを下記のように記述します。



今回は、最もシンプルな例ですが、Printメソッド、Lineメソッドを駆使すれば、複雑なグラフでも可能になります。

追記(09.07.29): 1行に複数のバーグラフが並ぶときに、左側に位置するバーの上に縦のLineが重なってしまう、という不具合のご指摘を受けましたので、この不具合を解消するために上記のコードを変更しました。このコードをご利用の方は上記を参考に変更してください。サンプルMDBも修正しましたのですでにダウンロード済みの方は再ダウンロードしてご利用ください。

追記(10.04.22): 予定がなくても名簿の名前を固定して出力する場合の記事を下記にアップしました。
レポートでガントチャート 名前固定版
また下記のサンプルMDBには、今回の記事の内容と、名前固定版 の両方のサンプルが入っています。

サンプルファイルが下記からダウンロードできます。
RptGanttChart_07.zip (Access 2007-2010 形式 - 23kb)
RptGanttChart.zip (Access 2002-2003 形式 - 25kb)
RptGanttChart_2k.zip (Access 2000 形式 - 26kb)

拍手する

10 Comments

hatena says..."バグフィクス: コード修正しました。"

不具合のご指摘を受けましたので、コードを修正しました。詳細は、記事の追記を参照ください。

2009.07.29 17:05 | URL | #5uE6dEgY [edit]
豊田 says..."質問です"

参考にさせていただいております。ありがとうございます。
そこで、質問なのですが名簿の名前は常に表示させておいて
予定がある人だけ時間を表示させることはできますでしょうか?

2010.04.19 17:25 | URL | #mBkGuz52 [edit]
hatena">hatena says..."Re: 質問です"

> 参考にさせていただいております。ありがとうございます。
> そこで、質問なのですが名簿の名前は常に表示させておいて
> 予定がある人だけ時間を表示させることはできますでしょうか?

とりあえずサンプルMDBの Access 2002-2003 形式 の方を、名前固定のレポートも追加したものに差し替えました。
ダウンロードして内容を確認ください。

解説は、後ほど時間ができたら、追加する予定です。

2010.04.20 00:41 | URL | #- [edit]
豊田 says..."ありがとうございます。"

早速のご対応ありがとうございます。確認させていただきます。

>解説は、後ほど時間ができたら、追加する予定です。

よろしくお願いいたします。

2010.04.20 16:44 | URL | #mBkGuz52 [edit]
hatena says..."名前固定版 アップしました"

名前固定版 の記事、下記にアップしましたので、ご参考に。

http://hatenachips.blog34.fc2.com/blog-entry-261.html

2010.04.24 07:29 | URL | #- [edit]
ED says..."勤務表で"

参考にさせて頂いております
質問なのですが
夜勤(21:00~翌朝6:00)な感じで次の日をまたぐ場合
どういう修正が必要でしょうか?
お手数ですが、よろしくお願いします

2011.01.05 13:40 | URL | #JalddpaA [edit]
hatena says..."Re: 勤務表で"

> 夜勤(21:00~翌朝6:00)な感じで次の日をまたぐ場合
> どういう修正が必要でしょうか?

入力するとき、
01/07 21:00~01/08 0:00 と 01/08 0:00~01/08 6:00 というように2つのレコードに分けて入力するとか、 クエリでそのような出力になるように加工するとか、、、
でどうでしょうか。

2011.01.07 16:26 | URL | #5uE6dEgY [edit]
ED says..."ありがとうございました"

クエリ加工で無事作成出来ました
返事が遅くなりましてすみませんでした

2011.03.12 10:49 | URL | #JalddpaA [edit]
名無し says..."「レポートでガントチャート」の帯部分に文字を記入したい"

いつも参考にさせて頂いております。

運用は工程表をイメージしており、
① 日付・時間を1ヶ月の日数に変更し、
② 名前の部分を機械または工程に変更し、
③ それぞれの機械または工程が担当する案件の内容を帯の中に記載したい
と考えております。

何分始めたばかりで、1つのアイディアも浮かばない状態です。
丸投げのようで恐縮ですが、よろしくお願いいたします。

2014.06.01 16:30 | URL | #- [edit]
hatena says..."re:「レポートでガントチャート」の帯部分に文字を記入したい"

下記の私の運営する掲示板で質問してください。

hatena の Microsoft Access 掲示板
http://hatena-access.progoo.com/bbs/

この掲示板はファイルをアップロードできるので、
現状のテーブルのコピーと、
作成中のレポート(できているところまででOKです。)
のデータベースファイルをZip圧縮して添付してください。

レポートがまったくできていないなら、希望の出力結果のレイアウトをエクセルか画像で表現したものを同封してください。

2014.06.01 18:11 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/45-e15d08e6
該当の記事は見つかりませんでした。