以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求时间段计算  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=45082)

--  作者:联友
--  发布时间:2014/1/15 11:27:00
--  求时间段计算

Select Case e.DataCol.Name
    Case "开始日期","结束日期"
        Dim dr,dr1 As DataRow
        dr = e.DataRow
        If dr.IsNull("开始日期") OrElse dr.IsNull("结束日期") Then
            dr("请假天数") = Nothing
        Else
            Dim n1,n2,n3 As Double
            Dim d1,d2,d3,d5 As Date
            d1 = dr("开始日期")
            d2 = dr("结束日期")
            n1 = (Cdate(format(d2,"yyyy/M/d")) - Cdate(format(d1,"yyyy/M/d"))).TotalDays
            If n1 <1 Then
                dr("请假天数") = Round2((d2 - d1).TotalDays*2.61818,3)
            ElseIf n1 <2 Then
                d3 = Format(d1,"HH:MM")
                d5 = #16:30#
                n2 = (d5-d3).TotalDays*26.1818/9.1666
                d3 = #07:20#
                d5 = Format(d2,"HH:MM")
                n2+ = (d5-d3).TotalDays*26.1818/9.1666
                dr("请假天数") = Round2(n2,1)
            Else  
                For n2 = 1 To n1 -1
                    d3= d1.AddDays(n2)
                    dr1=DataTables("法定假期").Find("日期=#" & format(d3,"M/d/yyyy") & "#")
                    If d3.DayOfWeek<>6 AndAlso d3.DayOfWeek<> 0  AndAlso dr1 Is Nothing Then
                        n3+= 1
                    End If
                Next
                d3 = Format(d1,"HH:MM")
                d5 = #16:30#
                n2 = (d5-d3).TotalDays*26.1818/9.1666
                d3 = #07:20#
                d5 = Format(d2,"HH:MM")
                n2+ = (d5-d3).TotalDays*26.1818/9.1666
                dr("请假天数") = Round2(n2+n3,1)
            End If
        End If
End Select

 

比如:开始日期是 2014/09/03 7:20   结束日期是 2014/09/04 16:30    请假天数是 2.2

如果是:开始日期是 2014/09/04 7:20   结束日期是 2014/09/04 16:30    请假天数是 1

请指点代码错在哪里?谢谢!

[此贴子已经被作者于2014-1-15 11:29:05编辑过]

--  作者:Bin
--  发布时间:2014/1/15 11:29:00
--  
你现在是报错,还是计算结果不正确? 你这个是要怎么计算的?
--  作者:联友
--  发布时间:2014/1/15 11:35:00
--  

一天的计算结果是对的,多天的计算结果都多0.2天


--  作者:Bin
--  发布时间:2014/1/15 11:40:00
--  
如果都是多出标准的0.2天. 你直接减去0.2就好了.
--  作者:联友
--  发布时间:2014/1/15 11:42:00
--  

一天的刚好,是不是出在这个值 26.1818/9.1666


--  作者:Bin
--  发布时间:2014/1/15 11:45:00
--  
这个我没看懂是算什么的图片点击可在新窗口打开查看
--  作者:联友
--  发布时间:2014/1/15 11:53:00
--  

上传一个例子

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11.zip

[此贴子已经被作者于2014-1-15 12:36:01编辑过]