以下是引用狐狸爸爸在2009-6-14 10:31:00的发言:
呵呵,我也考虑过列事件,但是决大多数时候,列事件只是将代码搞得更为复杂,例如金额由数量、单价、折扣计算得出,那么同样的代码要设置在数量、单价、折扣三列的事件中,显然用表事件更为合理:
Select e.DataCol.Name
Case "数量","单价","金额"
e.DataRow("金额") = .....
Case "列1","列2"
e.DataRow("列3") = ...
Case "例5"
e.DataRow.Locked = True
End Select
这样不仅条理清晰,而且便于维护,这也是为什么最初的针对列的计算代码被删除的原因。
[此贴子已经被作者于2009-6-14 10:34:26编辑过]
你举的这个多列计算的例子确实是用表事件比较方便。但是,当某一列数据发生改变时,需要对数据表、数据列进行比较复杂的处理时,用列事件来处理是比较合适的(就像易表的操作公式一样),虽然系统提供了DataColChanged、PrepareEdit、ValidateEdit、AfterEdit等表事件,但执行效率不如列事件高,并且必须在事件中判断变化的列。例如用PrepareEdit表事件动态设置列表项目,当每次进入该单元格的时侯即便是列表项目没有变化都要触发执行一次事件代码,在这种情况下在列事件中动态设置项目列表的代码要合适一些。
我觉得表事件和列事件有时是不能互相取代的,两者共存,各取所需,这也是目前编程比较通行的做法。完全用表事件代替列事件,把表事件搞得太多太复杂了,这对于初学者来说是不利的。另外,表事件比列事件触发执行的频率要高得多,能在列事件中处理的还是应该尽量放在列事件中。事件驱动的程序追求的就是把代码放在不同的事件中来执行,以便于提高执行效率。仅供老六参考!
[此贴子已经被作者于2009-6-15 14:44:13编辑过]