以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码修改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=111831)

--  作者:jick0526
--  发布时间:2017/12/29 21:58:00
--  代码修改
老师,请问下下面的代码如果要改成查相差几个月份,代码要怎么改,谢谢!

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/12/29 22:16:00
--  
Dim y,m,d As Integer
Dim 
dt1 As Date = dr("开始日期")
Dim 
dt2 As Date = dr("完成日期")
DateYMD
(dt1,dt2,y,m,d)
dr(
"执行天数") = y * 12 + m
--  作者:jick0526
--  发布时间:2018/1/2 19:02:00
--  
老师,什么的代码执行后出现这个错误提示
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看

--  作者:jick0526
--  发布时间:2018/1/2 19:07:00
--  
老师,上面的代码执行后出现这个错误提示

--  作者:cd_tdh
--  发布时间:2018/1/2 20:06:00
--  
要求不是非常准确,你可以按照每个月30.4167天计算月就可以了。
dr("执行天数") = tp.TotalDays / 30.4167
[此贴子已经被作者于2018/1/2 20:07:58编辑过]

--  作者:cd_tdh
--  发布时间:2018/1/2 20:22:00
--  
或试试
Dim dr As DataRow = e.DataRow
Dim y,m,d As Integer
Dim 
dt1 As Date = dr("开始日期")
Dim 
dt2 As Date = dr("完成日期")
DateYMD
(dt1,dt2,y,m,d)
dr(
"执行天数") = y * 12 + m
[此贴子已经被作者于2018/1/2 20:22:06编辑过]

--  作者:jick0526
--  发布时间:2018/1/2 20:48:00
--  
老师,我想要达到的效果是有效月份(包括月份的数量)不考虑天数,例如下面表格,麻烦老师帮我修改下,谢谢!
开始日期 结束日期   有效月份 
  20171121 20180213  4
  20180205 20180629   5 
比如第一行20171121-20180213  这个时间段里面包括了11月,12月,1月,2月,所以有效月份是4
  第二行20180205-20180629  这个时间段里面包括了02月,03月,04月,05月,06月,所以有效月份是5

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
--  作者:cd_tdh
--  发布时间:2018/1/2 21:12:00
--  
6楼代码执行结果是什么?
少了一个月,你在表达式后面+1就可以了
[此贴子已经被作者于2018/1/2 21:21:37编辑过]

--  作者:jick0526
--  发布时间:2018/1/2 21:21:00
--  
会已30天为参照+四舍五入,比如 2018-04-30至2018-05-02 显示结果会是0,但我想要的结果应该是2,因为有4月和5月
另外一个是 2018-10-28 至 2018-12-02 显示是1,显示结果会是,1,但我想要的结果应该是3,因为有10月和11月和12月

--  作者:cd_tdh
--  发布时间:2018/1/2 21:24:00
--  
对的,明天电脑上试试看了调试
[此贴子已经被作者于2018/1/2 21:24:51编辑过]