Foxtable(狐表)用户栏目专家坐堂 → 工作日期


  共有3315人关注过本帖树形打印复制链接

主题:工作日期

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/26 17:15:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "开始日期","天数"
        Dim dr As DataRow
        dr = e.DataRow
        If dr.IsNull("开始日期") OrElse dr.IsNull("天数") Then
            dr("结束日期") = Nothing
        Else
            Dim c As Integer = 0
            Dim d As Date
            Dim i As Integer = 0
            Dim drs = DataTables("法定假期").Select("")
            Do While True
                d = dr("开始日期").AddDays(i)
                If d.DayOfWeek >= 1 AndAlso d.DayOfWeek <= 5 Then
                    c += 1
                    For Each cdr As DataRow In drs
                        Dim sd As Date = cdr("开始日期")
                        If sd <= d AndAlso sd.AddDays(cdr("天数")) >= d Then
                            c -= 1
                            Exit For
                        End If
                    Next
                End If
                i += 1
                If c = dr("天数") Then
                    Exit Do
                End If
            Loop
            dr("结束日期") = dr("开始日期").AddDays(i)
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/30 17:12:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "开始日期","天数"
        Dim dr As DataRow
        dr = e.DataRow
        If dr.IsNull("开始日期") OrElse dr.IsNull("天数") Then
            dr("结束日期") = Nothing
        Else
            Dim c As Integer = 0
            Dim d As Date
            Dim i As Integer = 0
            Dim drs = DataTables("法定假期").Select("")
            Do While True
                d = dr("开始日期").AddDays(i)
                If d.DayOfWeek >= 1 AndAlso d.DayOfWeek <= 5 Then
                    c += 1
                    For Each cdr As DataRow In drs
                        Dim sd As Date = cdr("开始日期")
                        If sd <= d AndAlso sd.AddDays(cdr("天数")) >= d Then
                            c -= 1
                            Exit For
                        End If
                    Next
                End If
                If c = dr("天数") Then
                    Exit Do
                End If
                i += 1
            Loop
            dr("结束日期") = dr("开始日期").AddDays(i)
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/14 16:04:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "月份"
        Dim dr As DataRow
        dr = e.DataRow
        Dim str = dr("月份") & "-01"
        Dim d1 As Date
        If dr.IsNull("月份") Then
            dr("天数") = Nothing
        ElseIf Date.TryParse(str, d1) = False Then
            msgbox("月份不正确")
            dr("天数") = Nothing
        Else
            Dim d2 As Date = d1.AddMonths(1)
            Dim sp As TimeSpan = d2-d1
            Dim filter = "日期 >= #" & d1 & "# and 日期 < #" & d2 & "#"
            Dim jqs As new List(Of Date)
            Dim sbs As new List(Of Date)
            For Each r As DataRow In DataTables("假期安排").Select(filter)
                If r("安排项目") = "上班" Then
                    sbs.add(r("日期"))
                Else
                    jqs.add(r("日期"))
                End If
            Next
            Dim count As Integer = sp.TotalDays
            Dim sb = DataTables("假期安排").Compute("count(日期)", filter & " and 安排项目 = '上班'")
            For i As Integer = 0 To sp.TotalDays
                Dim d As Date = d1.AddDays(i)
                If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
                    If sbs.Contains(d) = False Then
                        count -= 1
                    End If
                ElseIf jqs.Contains(d) Then
                    count -= 1
                End If
            Next
            dr("天数") = count
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/15 9:05:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "月份"
        Dim dr As DataRow
        dr = e.DataRow
        Dim str = dr("月份") & "-01"
        Dim d1 As Date
        If dr.IsNull("月份") Then
            dr("天数") = Nothing
        ElseIf Date.TryParse(str, d1) = False Then
            msgbox("月份不正确")
            dr("天数") = Nothing
        Else
            Dim d2 As Date = d1.AddMonths(1)
            Dim sp As TimeSpan = d2-d1
            Dim filter = "日期 >= #" & d1 & "# and 日期 < #" & d2 & "#"
            Dim jqs As new List(Of Date)
            Dim sbs As new List(Of Date)
            For Each r As DataRow In DataTables("假期安排").Select(filter)
                If r("安排项目") = "上班" Then
                    sbs.add(r("日期"))
                Else
                    jqs.add(r("日期"))
                End If
            Next
            Dim count As Integer = sp.TotalDays
            For i As Integer = 0 To sp.TotalDays-1
                Dim d As Date = d1.AddDays(i)
                If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
                    If sbs.Contains(d) = False Then
                        count -= 1
                    End If
                ElseIf jqs.Contains(d) Then
                    count -= 1
                End If
            Next
            dr("天数") = count
        End If
End Select


 回到顶部