以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助!对多个时间段求和失效  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176129)

--  作者:15958896733
--  发布时间:2022/3/31 19:05:00
--  求助!对多个时间段求和失效

请教一下不用表达式,使用如下代码求2个时间段的耗时总时长

 

现在的问题是没有将2个时间段的时间输入完,实耗工时列为空,只有全部输入4个时间点,才会得到实际工时的数据

 

Select Case e.DataCol.Name
    Case "开始时间","结束时间","开始时间1","结束时间1"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("开始时间") OrElse dr.IsNull("结束时间") OrElse dr.IsNull("结束时间1")OrElse dr.IsNull("开始时间1") Then
            dr("实耗工时") = Nothing
        Else
            Dim tp As TimeSpan = (dr("结束时间") - dr("开始时间"))+(dr("结束时间1") - dr("开始时间1"))
            dr("实耗工时") = tp.Totalhours
        End If
End Select

 

求教!!!!


--  作者:有点蓝
--  发布时间:2022/3/31 20:18:00
--  
没明白想表达什么问题?意思是没有将2个时间段的时间输入完的时候也要计算,要怎么计算?
--  作者:15958896733
--  发布时间:2022/3/31 20:32:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:内网通截图20220331203002.png
图片点击可在新窗口打开查看
就是要实耗工时不管填那个时间段都能计算出来
--  作者:有点蓝
--  发布时间:2022/3/31 20:34:00
--  
意思是没有时间1 的时候直接使用开始时间减结束时间?没有开始时间、结束时间的时候直接使用开始时间1减结束时间1?
--  作者:15958896733
--  发布时间:2022/3/31 20:34:00
--  
现在是有一个时间段不填就没法计算,用表达式是能够实现,但是实耗工时我其他事件需要用到,用表达式的话就没办法利用到了
--  作者:15958896733
--  发布时间:2022/3/31 20:35:00
--  

--  作者:有点蓝
--  发布时间:2022/3/31 20:40:00
--  
Select Case e.DataCol.Name
    Case "开始时间","结束时间","开始时间1","结束时间1"
        Dim dr As DataRow = e.DataRow
        Dim gs As Double
        If dr.IsNull("开始时间") = False AndAlso dr.IsNull("结束时间") = False
            gs = (cdate(dr("结束时间")) -cdate( dr("开始时间"))).Totalhours
        End If
        If dr.IsNull("结束时间1") =False AndAlso  dr.IsNull("开始时间1")=False Then
            gs = gs + (cdate(dr("结束时间1")) -cdate( dr("开始时间1"))).Totalhours
        End If
        If gs > 0
            dr("实耗工时") = gs
        Else
            dr("实耗工时") = Nothing
            en dif
        End If
End Select
[此贴子已经被作者于2022/3/31 20:41:40编辑过]

--  作者:15958896733
--  发布时间:2022/3/31 20:55:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:内网通截图20220331205429.png
图片点击可在新窗口打开查看
老师,弹出来这个问题

 


--  作者:15958896733
--  发布时间:2022/3/31 20:57:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:内网通截图20220331205034.png
图片点击可在新窗口打开查看
我改成 CDBL 后没有报错,输入数据就成上面这样了
--  作者:15958896733
--  发布时间:2022/3/31 20:57:00
--  

Select Case e.DataCol.Name

    Case "开始时间","结束时间","开始时间1","结束时间1"

        Dim dr As DataRow = e.DataRow

        Dim gs As Double

        If dr.IsNull("开始时间") = False AndAlso dr.IsNull("结束时间") = False

            gs = CDBL(dr("结束时间")) - CDBL( dr("开始时间"))

        End If

        If dr.IsNull("结束时间1") =False AndAlso  dr.IsNull("开始时间1")=False Then

            gs = gs + CDBL(dr("结束时间1")) - CDBL( dr("开始时间1"))

        End If

        If gs > 0

            dr("实耗工时") = gs

        Else

            dr("实耗工时") = Nothing

            End If

End Select