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


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

主题:工作日期

帅哥哟,离线,有人找我吗?
良才
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:776 积分:6205 威望:0 精华:0 注册:2012/6/11 17:21:00
  发帖心情 Post By:2017/11/14 14:25:00 [只看该作者]

老师按您意见,怎样把假期按放假减掉、把上班的加上,请老师指教,谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工作日期.zip


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:三尾狐 帖子:776 积分:6205 威望:0 精华:0 注册:2012/6/11 17:21:00
  发帖心情 Post By:2017/11/15 8:58:00 [只看该作者]

老师发现一个奇怪问题,除周六、周日外,3、6、9月都少1天,其它月份都对,9月是21天,计算是20天。


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20171115084114.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:三尾狐 帖子:776 积分:6205 威望:0 精华:0 注册:2012/6/11 17:21:00
  发帖心情 Post By:2017/11/15 9:14:00 [只看该作者]

谢谢老师

 回到顶部
总数 15 上一页 1 2