Microsoft Access 掲示板

日付【開始日と終了日】の期間に矢印【⇔】のように表示したい / 6

9 コメント
views
4 フォロー
6
名前なし 2020/04/02 (木) 23:07:06 e2559@c90e0 >> 5

早速のお返事有難うございます。
上記コードを理解できるように努めてみます。

追伸;
ちなみに月跨ぎの場合はエラー表示が出ました。
例えば、
月マタギの”2月”を表示した瞬間、”G59”フィールドが見つかりません。
日付をクリックすると”T43870”フィールドが見つかりません。というのもでした。

お時間の都合が付きましたら、教えていただけると幸いです。

通報 ...
  • 7
    hatena 2020/04/03 (金) 09:04:18 修正 >> 6

    カレンダーの範囲をまたぐときにも対応できる様に処理を追加しました。

    Public Sub SetSchedule()
        Dim i As Integer
        For i = 1 To 42
            Me("T" & i).Caption = ""
            Me("G" & i).Caption = ""
        Next
        
        Dim rs As DAO.Recordset
        Set rs = CurrentDb.OpenRecordset( _
            "SELECT 開始日, 終了日, 件名 FROM T_予定 WHERE " & _
            "終了日>#" & FirstDay & "# AND 開始日<=#" & FirstDay + 42 & "#", _
            dbOpenForwardOnly, dbReadOnly)
        Do Until rs.EOF
            Dim BeginI As Long
            BeginI = rs!開始日 - FirstDay
            If BeginI > 0 Then
                Me("T" & BeginI).Caption = rs!件名
            Else
                Me("T1").Caption = rs!件名
            End If
            
            If Not IsNull(rs!終了日) Then
                If BeginI > 0 Then
                    Me("G" & BeginI).Caption = ChrW(8656) '"←"
                Else
                    BeginI = 0
                End If
                
                Dim EndI As Long
                EndI = rs!終了日 - FirstDay
                If EndI <= 42 Then
                    Me("G" & EndI).Caption = Me("G" & EndI).Caption & ChrW(8658) '"→"
                Else
                    EndI = 43
                End If
                For i = BeginI + 1 To EndI - 1
                    Me("G" & i).Caption = "="
                Next
            End If
            rs.MoveNext
        Loop
        rs.Close: Set rs = Nothing
        
    End Sub
    

    下記がサンプルファイルです。

    FrmCalendar2.zip

  • 8
    名前なし 2020/04/03 (金) 15:05:04 e2559@c90e0 >> 6

    早々にご対応いただき有難うございます。
    イメージしていたコードより思いの外複雑でしたが、勉強になりました。
    今後ともよろしくお願いいたします。