以文本方式查看主题
- 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
|