我不主张增加列事件,在这一点上我同意贺老师的观点,如果增加列事件会使代码变更大常分散,不好管理.所以,以前的计算代码取消了,也并无不妥. 但是,其实计算代码与Datacolchanged事件中的代码相比,有一个实质性的区别.那就是计算代码完全是按变化最终影响的结果列进行组织的,而Datacolchanged事件中的条件却完全是按变化的来源列进行组织的.
如果从计算机处理的角度来看,当然是按变化的来源列组织更为高效/方便处理,但如果从用户使用方便/容错的角度,按变化影响的结果列进行组织却更方便编程,而且不容易出错.所以,在很多时候,我很留恋以前的列计算代码,但以前的列计算代码确实太分散不易管理.我正是分析了以前的列计算代码,所以,我才认为把列计算关系的代码按变化影响的结果列进行组织应该完全是可能的(因为以前的列计算代码就是这么组织的,这已经实现了).
对于简单的计算关系,按来源列进行组织和按结果列进行组织并无多大的区别,但对于计算关系非常复杂的事件代码,两者是有明显区别的. 一般情况下,结果列数量少,而且一目了然,很容易编码;引起变化的列却非常多,写编码时容易漏掉(我就曾不止一次的漏掉条件列).
如果更改系统现有的Datacolchanged事件有难度,看能否这样解决.再增加一个表事件,介于以前的列计算代码与Datacolchanged事件之间,与以前的计算代码的区别在于它是一个表事件,一个表的所有代码都组织在一起;与Datacolchanged事件的区别在于,对代码不按引起变化的列进行组织,而改为按变化影响的结果列进行组织.
增加这个事件,可能对大部分人意义并不大,但也没有不利的影响.但对于计算关系非常复杂的表代码来说,却可以提高编码效率,而且大大降低容错性. 如果表中的计算关系只有 M=A+B+C+D 这么简单,那么我的建议纯属浪费时间,但如果您认真分析一些非常复杂的计算关系,就会感觉到这两点有多大的区别了.
[此贴子已经被作者于2009-6-15 9:19:54编辑过]