以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教:二个日期列的表达式相减 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2699) |
-- 作者:yangming -- 发布时间:2009/5/6 11:34:00 -- 请教:二个日期列的表达式相减 "合同开始日期"和"合同结束日期"都是日期型,合同期是表达式列,要求:用"合同结束日期-合同开始日期"+"年" 请教如何写表达式公式 |
-- 作者:八婺 -- 发布时间:2009/5/6 11:59:00 -- 用表达式麻烦呀,还是改用代码计算吧。 可以参考一下DateDiff函数。 |
-- 作者:八婺 -- 发布时间:2009/5/6 12:09:00 -- 如果用代码可以这样,DataColChanged事件。 Dim dr As DataRow = e.DataRow if e.DataCol.Name = "合同开始日期" OrElse e.DataCol.Name = "合同结束日期" Then if dr.IsNull("合同开始日期") = false And dr.IsNull("合同结束日期") = false Then dr("合同期") = DateDiff("yyyy",dr("合同开始日期"),dr("合同结束日期")) & "年" End If End If |
-- 作者:yangming -- 发布时间:2009/5/6 12:21:00 -- 我试试,先谢谢八婺老师,用代码相减的好做,就是如何绑到合同期我不会,呵 [此贴子已经被作者于2009-5-6 12:22:01编辑过]
|
-- 作者:yangming -- 发布时间:2009/5/6 12:29:00 -- 三楼的代码有个问题,不能光是计算年份,比如:20081231减去20070101,结果是一年,其实应该是二年,我要的是年月一起参与的计算,因为一般的合同期都是按入司时间减一天的 |
-- 作者:yangming -- 发布时间:2009/5/6 12:46:00 -- 我改成这样就达到我的要求了,呵呵 Dim dr As DataRow = e.DataRow if e.DataCol.Name = "合同开始时间" OrElse e.DataCol.Name = "合同结束时间" Then if dr.IsNull("合同开始时间") = false And dr.IsNull("合同结束时间") = false Then dr("合同期") = CInt(DateDiff("y",dr("合同开始时间"),dr("合同结束时间"))/365) & "年" End If End If [此贴子已经被作者于2009-5-6 12:46:35编辑过]
|