Microsoft Access 掲示板

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

4 コメント
views
4 フォロー

2011年に一度お世話になっております。今回も改めましてよろしくお願いいたします。
ガントチャートを1日の時間管理ではなく、1年間の日付管理にするにはどこをさわれば良いのでしょうか?
初心者で申し訳ありません。
Option Compare Database
Option Explicit
Const L = 567 2 'グラフの左位置 2cm
Const Rng = 567
0.95   '1時間の幅 0.95cm

'
Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer)
    Me.MoveLayout = False
End Sub

Private Sub グループヘッダー0_Print(Cancel As Integer, PrintCount As Integer)
Dim i As Long
    Me.DrawStyle = 2

    For i = 0 To 24
        Me.Line (L + i Rng, 0)-(L + i Rng, 1000)
    Next
End Sub

'日付ヘッダー
Private Sub グループヘッダー1_Print(Cancel As Integer, PrintCount As Integer)
Dim i As Long
    '時刻ラベル表示
    For i = 0 To 24
        Me.CurrentY = Me.日付.Top
        Me.CurrentX = L + i * Rng
        Me.Print i
    Next
End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    Me.MoveLayout = False
End Sub

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
    Me.DrawWidth = 1
    Me.DrawStyle = 6
    Me.FillColor = Me.色
    Me.FillStyle = 0
    Me.Line (L + (Me.開始時刻) 24 Rng, 50)-(L + (Me.終了時刻) 24 Rng, 330), 0, B
End Sub

EDDGE
作成: 2021/04/22 (木) 10:46:24
通報 ...
1

「1年間の日付管理」といっても具体的にどのようなレイアウトなのか分かりません。
エクセルとかでレイアウトをイメージを作成して、画像で提示してもらえませんか。

あと、もとになるテーブルのテーブル名、フィールド名、データ例も提示してください。

2
EDDGE 2021/04/26 (月) 03:05:17 f05a5@73c92

返答ありがとうございます、早速本題に入らせて頂きます。
テーブル名:T_登録
フィールド名:登録日、開始日、終了日、プロジェクト名、状態
各プロジェクトを年間で管理し、完了している案件か、様子見で終わった案件なのかを一覧可能に出来たらと考えております画像1

お忙しい中恐縮ではございますが、ご指導のほどよろしくお願い致します。

3

サンプルを作成してみました。

テーブル名は、T_プロジェクトに変更しました(T_登録では内容がわからないので)。

フォーム上にコンボボックスとコマンドボタンを配置して、コンボボックスで年を選択します。
コマンドボタンをクリックするとレポートのプレビューが開きます。
フォーム名 フォーム1
コンボボックス名 cbYear

コマンドボタンクリック時

Private Sub コマンド0_Click()
    DoCmd.OpenReport "R_プロジェクト", acViewPreview, , _
                     "開始日<=#" & Me.cbYear & "/12/31# AND 終了日>=#" & Me.cbYear & "/01/01#"
End Sub

レポート名 R_プロジェクト
レポートのレコードソース T_プロジェクト
ページ設定 用紙 A4 横

ページヘッダーにテキストボックスを配置する。
名前 txt年
コントロールソース =[Forms]![フォーム1]![cbYear]

レポートモジュール

Option Compare Database
Option Explicit
Const L = 567 * 4    'グラフの左位置 5cm
Const Rng = 567 * 0.06  '1日の幅 0.06cm
Dim FDate As Date

Private Sub Report_Load()
    FDate = DateSerial(Me.txt年, 1, 1)
End Sub

Private Sub ページヘッダーセクション_Print(Cancel As Integer, PrintCount As Integer)
'月ラベル
    Dim m As Long, d As Long
    For m = 1 To 12
        d = DateDiff("d", FDate, DateSerial(Me.txt年, m, 1))
        Me.CurrentY = Me.txt年.Top
        Me.CurrentX = L + d * Rng
        Me.Print m & "月"
    Next
End Sub

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
    Me.DrawStyle = 0
    Me.ForeColor = RGB(150, 150, 150)
    '罫線
    Dim m As Long, d As Long
    For m = 1 To 13
        d = DateDiff("d", FDate, DateSerial(Me.txt年, m, 1))
        Me.Line (L + d * Rng, 0)-(L + d * Rng, 1000)
    Next

    Me.DrawWidth = 1
    Me.DrawStyle = 6
    Me.FillColor = RGB(90, 150, 200)
    Me.FillStyle = 0
    Me.Line (L + DateDiff("d", FDate, Me.開始日) * Rng, 50)-(L + DateDiff("d", FDate, Me.終了日) * Rng, 330), 0, B

End Sub

画像1

下記をクリックするとサンプルファイルをダウンロードできます。RptGanttChart_Year.zip

4
EDDGE 2021/04/28 (水) 17:19:11 f05a5@73c92

お世話になっております。無事組み込めました。
調整作業に入りたいと思います。
丁寧で分かりやすい対応、本当にありがとうございました。