Foxtable(狐表)用户栏目专家坐堂 → 关于时段列负数问题


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

主题:关于时段列负数问题

帅哥哟,离线,有人找我吗?
netfox168
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:274 积分:2960 威望:0 精华:0 注册:2011/9/19 0:18:00
关于时段列负数问题  发帖心情 Post By:2012/12/15 22:19:00 [只看该作者]

参考帮助里的“时段列与计算”一节,设置了计算两列间的时间段代码(如下示)。但有个问题,如果跨越24时的时间段会产生负数的结果,比如起始时间为23:30,结束时间为第二天凌晨0:30,结果应为1小时,但实际出来的结果为 -23小时。应如何解决?

 

还有一个问题,如果结果为整小时的,它就不显示分位,比如6小时就显示 06 而不是06:00 。

 

Select Case e.DataCol.name
    Case "起始时间","结束时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("起始时间") Or dr.IsNull("结束时间") Then
           dr("本次用时") = Nothing
        Else
            Dim tp As TimeSpan
            tp = dr("结束时间") - dr("起始时间")
            dr("本次用时") = tp.TotalSeconds() '真正的时段型数据要转换为秒数,才能存入时段列
        End
If

End
Select


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/12/17 8:06:00 [只看该作者]

Select Case e.DataCol.name
    Case "起始时间","结束时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("起始时间") Or dr.IsNull("结束时间") Then
            dr("本次用时") = Nothing
        Else
            Dim tp As TimeSpan
            tp = dr("结束时间") - dr("起始时间")
            If tp.TotalSeconds < 0 Then
                tp.add(new timespan(24,0,0))
            End If
            dr("本次用时") = tp.TotalSeconds() '真正的时段型数据要转换为秒数,才能存入时段列
        End If
End Select


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


加好友 发短信
等级:童狐 帖子:274 积分:2960 威望:0 精华:0 注册:2011/9/19 0:18:00
  发帖心情 Post By:2012/12/17 9:42:00 [只看该作者]

此问题昨天通过摸索自己解决了,我设置了参数 tp2(1,0,0,0) ,当 tp1<0 时就 tp1.add(tp2).totalseconds. 这也行,哈哈...

不过还是感谢狐爸的帮助,你这个更简洁。学习了!


 回到顶部