你有原则性的错误,DataColChanged不应该使用CurrentTable.current,而应该使用e.DataRow, CurrentTable.current表示当前表的当前行,并非一定就是触发事件的表和行,e.DataRow才表示触发事件的行,e.DataTable表示触发事件的表。
你使用某个事件,一定要搞清楚这个事件的e参数能提供什么信息,你这样的设计,数据不出错是幸运的,出错才是正常的,建议细看开发指南中的《事件编程》,然后检查你所有的事件代码!!!
正常的代码应该是这样的:
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.name
Case "入库时间","出库时间"
If dr("出库时间") < dr("入库时间") Then
MessageBox.show("出库时间小于入库时间,请对比入库与出库时间!")
dr("闲置时间") = Nothing
Else
If dr.isnull("出库时间") = True Then
dr("闲置时间") = (Date.today.year - dr("入库时间").year)*12 + (Date.today.month - dr("入库时间").month)
Else
dr("闲置时间") = (dr("出库时间").year - dr("入库时间").year)*12 + dr("出库时间").month - dr("入库时间").month
End If
End If
End Select
[此贴子已经被作者于2012-2-17 8:29:43编辑过]