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


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

主题:[求助]工作日期

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106182 积分:540033 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/30 21:06:00 [只看该作者]

把原代码的天数(cdr("天数"))改为从任务所须天数表获取不就行了

Dim tsf As Integer = DataTables("任务所须天数").find("任务名称 = '任务1' and  档次类型='" & e.datarow("") & "'")("所需工作日")

 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点蓝)把原代码的天数(cdr("天数"))改为从...  发帖心情 Post By:2018/7/31 10:52:00 [只看该作者]

1、还是报错,求帮助

2、表A档次列对应任务所需天数表的档次类型列 任务1 2 3 4 所需的天数,跨表录入呢?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:还是报错 求帮助.foxdb


图片点击可在新窗口打开查看此主题相关图片如下:跨表录入对应档次任务所需工作日.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/7/31 10:56:38编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/31 12:47:00 [只看该作者]

'不含任务1_开始日期
Select Case e.DataCol.Name
    Case "任务1_开始日期","档次"
        Dim dr As DataRow
       
        dr = e.DataRow
        If dr.IsNull("任务1_开始日期") Then
            dr("任务1_结束日期") = Nothing
            dr("任务2_结束日期") = Nothing
            dr("任务3_结束日期") = Nothing
            dr("任务4_结束日期") = Nothing
        Else
           
            Dim ts1 As Integer = DataTables("任务所须天数").find("任务名称 = '任务1' and  档次类型='" & e.DataRow("档次") & "'")("所需工作日")
            Dim ts2 As Integer = DataTables("任务所须天数").find("任务名称 = '任务2'")("所需工作日")
            Dim ts3 As Integer = DataTables("任务所须天数").find("任务名称 = '任务3'")("所需工作日")
            Dim ts4 As Integer = DataTables("任务所须天数").find("任务名称 = '任务4'")("所需工作日")
            dr("任务1_所需工作日") = ts1
            dr("任务2_所需工作日") = ts2
            dr("任务3_所需工作日") = ts3
            dr("任务4_所需工作日") = ts4
            Dim tsf As Integer = ts1+ts2+ts3+ts4
            Dim c As Integer = 0
            Dim d As Date
            Dim i As Integer = 1
            Dim drs = DataTables("法定假期").Select("")
            Dim lst1 As new List(of Date)
            Dim lst2 As new List(of Date)
            For Each cdr As DataRow In drs
                If cdr("名称") = "上班" Then
                    For m As Integer = 1 To cdr("天数")
                        lst2.Add(cdr("开始日期").AddDays(m-1))
                    Next
                Else
                    For m As Integer = 1 To cdr("天数")
                        lst1.Add(cdr("开始日期").AddDays(m-1))
                    Next
                End If
            Next
            'Dim tsf As Integer = dr("天数")
            d = dr("任务1_开始日期").adddays(1)
            Do While i < ts1
                d = d.AddDays(1)
                If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
                    If lst2.Contains(d) Then
                        i = i + 1
                    End If
                Else
                    If lst1.Contains(d) = False Then
                        i = i + 1
                    End If
                End If
            Loop
            dr("任务1_结束日期") = d
           
            tsf = ts1+ts2
            d = dr("任务1_开始日期").adddays(1)
            i = 1
            Do While i < tsf
                d = d.AddDays(1)
                If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
                    If lst2.Contains(d) Then
                        i = i + 1
                    End If
                Else
                    If lst1.Contains(d) = False Then
                        i = i + 1
                    End If
                End If
            Loop
            dr("任务2_结束日期") = d
           
            tsf = ts1+ts3+ts2
            d = dr("任务1_开始日期").adddays(1)
            i = 1
            Do While i < tsf
                d = d.AddDays(1)
                If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
                    If lst2.Contains(d) Then
                        i = i + 1
                    End If
                Else
                    If lst1.Contains(d) = False Then
                        i = i + 1
                    End If
                End If
            Loop
            dr("任务3_结束日期") = d
           
            tsf = ts1+ts4+ts3+ts2
            d = dr("任务1_开始日期").adddays(1)
            i = 1
            Do While i < tsf
                d = d.AddDays(1)
                If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
                    If lst2.Contains(d) Then
                        i = i + 1
                    End If
                Else
                    If lst1.Contains(d) = False Then
                        i = i + 1
                    End If
                End If
            Loop
            dr("任务4_结束日期") = d
           
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)'不含任务1_开始日期Select Case e.D...  发帖心情 Post By:2018/12/10 17:07:00 [只看该作者]

大师,请教单元格绘制的进度列,根据修改日期列距离今天的工作日天数差变颜色:

工作日,根据法定假期表判断是否放假还是上班(加班) 

 


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

 

加密狗不能升级了,高于2018-07-09版本打不开,不会意思哈

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:单元格绘制.foxdb

[此贴子已经被作者于2018/12/10 17:37:29编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/10 17:32:00 [只看该作者]

计算天数,参考代码

 

Select Case e.DataCol.Name
    Case "修改日期"
        Dim dr As DataRow
        dr = e.DataRow
        If dr.IsNull("修改日期")  Then
            dr("进度") = Nothing
        Else
            Dim c As Integer = 0
            Dim d As Date
            Dim drs = DataTables("法定假期").Select("")
            Dim lst1 As new List(of Date)
            Dim lst2 As new List(of Date)
            For Each cdr As DataRow In drs
                If cdr("名称") = "上班" Then
                    For m As Integer = 1 To cdr("天数")
                        lst2.Add(cdr("开始日期").AddDays(m-1))
                    Next
                Else
                    For m As Integer = 1 To cdr("天数")
                        lst1.Add(cdr("开始日期").AddDays(m-1))
                    Next
                End If
            Next
            d = dr("修改日期")
            Dim i As Integer = 0
            Do While d <= Date.Today
                If d.DayOfWeek = 0 OrElse d.DayOfWeek = 6 Then
                    If lst2.Contains(d) Then
                        i = i + 1
                    End If
                Else
                    If lst1.Contains(d) = False Then
                        i = i + 1
                    End If
                End If
                d = d.AddDays(1)
            Loop
            dr("进度") = i
        End If
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)计算天数,参考代码 Select...  发帖心情 Post By:2018/12/12 11:58:00 [只看该作者]

 大师,1楼,如果根据 开始日期、结束日期;结合法定假期,怎么自动计算出 天数(工作日)呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/12 11:59:00 [只看该作者]

参考15楼代码啊。Date.Today改成你的结束日期即可。

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