左栏'); } else{ document.write('关闭左栏'); } }catch(e){alert(e);}
Foxtable(狐表)用户栏目专家坐堂 → 代码修改


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

主题:代码修改

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


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
代码修改  发帖心情 Post By: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

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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By:2018/1/2 19:02:00 [只看该作者]

老师,什么的代码执行后出现这个错误提示
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看

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


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By:2018/1/2 19:07:00 [只看该作者]

老师,上面的代码执行后出现这个错误提示

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


加好友 发短信
等级:狐精 帖子:3150 积分:20981 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2018/1/2 20:06:00 [只看该作者]

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

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


加好友 发短信
等级:狐精 帖子:3150 积分:20981 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By: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
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3150 积分:20981 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2018/1/2 21:12:00 [只看该作者]

6楼代码执行结果是什么?
少了一个月,你在表达式后面+1就可以了
[此贴子已经被作者于2018/1/2 21:21:37编辑过]

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


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By: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
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3150 积分:20981 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2018/1/2 21:24:00 [只看该作者]

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

 回到顶部
总数 16 1 2 下一页