以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]日期计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98408)

--  作者:77611471
--  发布时间:2017/3/29 11:44:00
--  [求助]日期计算
代码如下,计算结果如果开始日期和完成日期为同一天,则执行天数为0,怎样改为如果开始日期和完成日期为同一天,执行天数为1?

Select Case e.DataCol.Name
    Case
"开始日期",
"完成日期"
       
Dim dr As DataRow = e.DataRow
       
If dr.IsNull("开始日期") OrElse dr.IsNull("完成日期") Then
            dr(
"执行天数") = Nothing
       
Else
           
Dim tp As TimeSpan = dr("完成日期") - dr("开始日期")
            dr(
"执行天数") = tp.TotalDays
        End
If
End
Select


--  作者:有点色
--  发布时间:2017/3/29 12:24:00
--  

直接加1不就好了?

 

Select Case e.DataCol.Name
    Case
"开始日期",
"完成日期"
       
Dim dr As DataRow = e.DataRow
       
If dr.IsNull("开始日期") OrElse dr.IsNull("完成日期") Then
            dr(
"执行天数") = Nothing
       
Else
           
Dim tp As TimeSpan = dr("完成日期") - dr("开始日期")
            dr(
"执行天数") = tp.TotalDays + 1
        End
If
End
Select


--  作者:77611471
--  发布时间:2017/3/29 13:35:00
--  
加1就不对,如果执行天数大于0就是在结果上加了一天,那样也不对。

我想要的是如果执行天数大于0,就等于执行天数,如果执行天数等于为,执行天数就为1

--  作者:有点蓝
--  发布时间:2017/3/29 14:29:00
--  
Select Case e.DataCol.Name
    Case "开始日期","完成日期"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("开始日期") OrElse dr.IsNull("完成日期") Then
            dr("执行天数") = Nothing
        Else
            If dr("完成日期") = dr("开始日期")
                dr("执行天数") = 1
            Else
                Dim tp As TimeSpan = dr("完成日期") - dr("开始日期")
                dr("执行天数") = tp.TotalDays
            End If
        End If
End Select