年龄和工龄的精确计算
方法一
假定表中有两列,分别是入职日期和工龄,需要根据入职日期精确计算出工龄。
可以如下设置DataColChanged事件:
Select
Case e.DataCol.name
Case "入职日期"
If e.DataRow.IsNull("入职日期")
Then
e.DataRow("工龄")
= Nothing
Else
Dim
tp As
TimeSpan = Date.today
- CDate(e.DataRow("入职日期"))
e.DataRow("工龄")
= Math.Round(tp.TotalDays
/ 365.2422,2)
End
If
End
Select
年龄也可以用同样的方法计算。
提示: 一年的平均天数是365.2422天。
方法二
如果要准确计算出工龄的年月日,例如:
可以考虑使用DateYMD函数,如下设置DataColChanged事件代码:
Select
Case e.DataCol.name
Case
"入职日期"
If e.DataRow.IsNull("入职日期")
Then
e.DataRow("工龄_年")
= Nothing
e.DataRow("工龄_月")
= Nothing
e.DataRow("工龄_日")
= Nothing
Else
Dim
y,m,d
As Integer
DateYMD(e.DataRow("入职日期"),Date.Today,y,m,d)
e.DataRow("工龄_年")
= y
e.DataRow("工龄_月")
= m
e.DataRow("工龄_日")
= d
End If
End
Select
最后,为了每次打开项目后,都能得到最新的工龄数据,可以在AfterOpenProject事件中,设置下面的代码:
DataTables(
"员工").DataCols("入职日期").RaiseDataColChanged()