以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]工作日期  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=122635)

--  作者:湛江智
--  发布时间:2018/7/30 11:19:00
--  [求助]工作日期

表A结束日期计算条件根据:法定假期表 周末上班的情况计算

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


图片点击可在新窗口打开查看此主题相关图片如下:结束日期根据法定假期表上班日计算.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/7/30 11:21:01编辑过]

--  作者:有点甜
--  发布时间:2018/7/30 11:39:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工作日期.foxdb


--  作者:湛江智
--  发布时间:2018/7/30 11:48:00
--  回复:(有点甜)[upload=foxdb,工作日期.foxdb]viewF...

如果不算开始日期,这天代码怎么修改呢?


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


--  作者:有点甜
--  发布时间:2018/7/30 11:56: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 = 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 tshu As Integer = dr("天数")
            d = dr("开始日期").adddays(1)
            Do While i < tshu
                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("结束日期") = d
        End If
End Select

--  作者:湛江智
--  发布时间:2018/7/30 13:33:00
--  回复:(有点甜)Select Case e.DataCol.Name?&n...

表A里面的任务2、任务3、任务4结束时间怎么录入呢?

任务2是结束日期 的后续任务

任务3是任务2  的后续任务

任务4是任务3 的后续任务

任务2、3、4结束日期同时满足法定假期表的工作日

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:根据任务所需时间表自动录入各任务结束时间.foxdb


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

图片点击可在新窗口打开查看此主题相关图片如下:22.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/7/30 14:00:48编辑过]

--  作者:有点甜
--  发布时间:2018/7/30 15:25:00
--  

datacolchanging事件,细节自己调整

 

Select Case e.DataCol.name
    Case "任务2_结束日期"
        Dim d1 As Date = e.DataRow("结束日期")
        Dim d2 As Date = e.NewValue
        If e.NewValue <> Nothing
            If d2 < d1 Then
                msgbox("日期不能小于结束日期")
                e.cancel = True
            Else
                Dim fdr As DataRow = DataTables("法定假期").find("开始日期 <= #" & e.NewValue & "#", "开始日期 desc")
                If fdr IsNot Nothing Then
                    If fdr("开始日期") <= e.NewValue AndAlso cdate(fdr("开始日期")).AddDays(fdr("天数")) >= e.newvalue AndAlso fdr("名称") <> "上班" Then
                        msgbox(fdr("名称"))
                        e.cancel = True
                        Return
                    End If
                End If
                Dim wday = e.NewValue.dayofweek
                If wday = 6 OrElse wday = 0 Then
                    If fdr Is Nothing Then
                        msgbox("周末")
                        e.cancel = True
                    Else
                        If fdr("开始日期") <= e.NewValue AndAlso cdate(fdr("开始日期")).AddDays(fdr("天数")) >= e.newvalue AndAlso fdr("名称") <> "上班" Then
                            msgbox("周末")
                            e.cancel = True
                        End If
                    End If
                End If
               
            End If
        End If
End Select


--  作者:湛江智
--  发布时间:2018/7/30 16:03:00
--  回复:(有点甜)datacolchanging事件,细节自己调整...

1、上面代码,有点问题:中秋节是9月24日,任务2_结束日期选择9月25日还提示文字:中秋节,怎么上面修复代码呢?

图片点击可在新窗口打开查看此主题相关图片如下:上面代码还有点问题.jpg
图片点击可在新窗口打开查看

 

 2、想实现的效果是:自动录入任务2 任务3 任务4的结束日期(所需天数见任务所需天数表里面的所需工作日)

上面3个任务的结束日期自动录入


图片点击可在新窗口打开查看此主题相关图片如下:连续任务.jpg
图片点击可在新窗口打开查看

上图手写红色 开是开始日期9月20日

 1 2 3 4 分别对应下图 结束日期  任务2_结束日期  任务3_结束日期  任务4_结束日期在日历中的位置

                               9月21日    9月26日              9月29日              10月10日

9月24日端午节,9月29日周末上班,国庆7天假期



图片点击可在新窗口打开查看此主题相关图片如下:自动生成这3个结束日期.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/7/30 16:59:40编辑过]

--  作者:湛江智
--  发布时间:2018/7/30 16:07:00
--  

只能上传3个附件,接上面附件回复:

 

结束日期后续连续任务2 任务3 任务4 所需工作日天数:

任务2,是结束日期 后续接着需要2天完成

任务3,是任务2结束日期,后续接着需要3天完成

任务4,是任务3结束日期,后续接着需要4天完成


图片点击可在新窗口打开查看此主题相关图片如下:3个连续任务所需工作日.jpg
图片点击可在新窗口打开查看


 

项目文件下载:

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

[此贴子已经被作者于2018/7/30 16:59:59编辑过]

--  作者:有点甜
--  发布时间:2018/7/30 17:10:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:再问.foxdb


--  作者:湛江智
--  发布时间:2018/7/30 20:16:00
--  回复:(有点甜)[upload=foxdb,再问.foxdb]viewFile....

表A减少列:天数,增加列:档次——取值:大班、中班、小班,对应取值任务1 2 3 4所需工作日

录入任务1_开始日期,自动录入其他日期

删除任务1_开始日期,自动删除其他日期

代码怎么修改呢?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表结构调整.foxdb

 

表A调整后:


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

 

取消表A的天数列 任务1所需的时间也在任务所须天数表获取

增加 档次类型列,表A的档次列取值对应档次类型列不同,任务1 2 3 4完成时间取值不同

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

 

[此贴子已经被作者于2018/7/30 20:21:22编辑过]