以文本方式查看主题

-  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编辑过]