Microsoft Access 掲示板

営業日ベースの日付の羅列から連続する開始日と終了日を計算 / 9

15 コメント
views
4 フォロー
9
hiroton 2022/09/17 (土) 08:05:55 修正 f0ac9@2ee8f

さて、本題です

2022/9/16(金)休暇取得、2022/9/19(月)休暇取得があれば、9/17、9/18は休暇期間中と考え、
2022/9/16(金)休暇取得、2022/9/19(月)休暇取得がなければ、9/17、9/18は休暇期間中と考えない、

「休日を挟んで連続していたら連続とみなす。そうでなかったら前のレコードの日付を終了日とする」ですね。上記丁寧版では無意味だった「終了日となりうる日付」と「休日を考慮した連続した日付の最終日」をきっちり分けて考えてあげればいいですね

Do Until rs.EOF
    If rs!氏名 <> 氏名 Then
        Debug.Print 終了日
        Debug.Print rs!氏名, rs!休暇取得日, ;
        氏名 = rs!氏名
        終了日 = rs!休暇取得日
'//--処理が一本化できたので削除
'//      rs.MoveNext
'//--ここまで
'//同じチェックをあとでやるので削除・一本化
'//  ElseIf rs!休暇取得日 = 終了日 + 1 Then
'//      終了日 = 終了日 + 1
'//      rs.MoveNext
'//--ここまで
    Else
    '//休日分、判定する日付をずらす
        Dim 休暇期間の翌日 As Date
        休暇期間の翌日 = 終了日 + 1
        Do While(Is休日(休暇期間の翌日))
            休暇期間の翌日 = 休暇期間の翌日 + 1
        Loop

        If rs!休暇取得日 = 休暇期間の翌日 Then
            終了日 = 休暇期間の翌日
        Else
            Debug.Print 終了日
            Debug.Print rs!氏名, rs!休暇取得日, ;
            終了日 = rs!休暇取得日
        End If
    End If
'//レコード移動処理も一本化
    rs.MoveNext
Loop
通報 ...