以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 建议:建议把DatacolChanged事件变得智能一些! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3133) |
-- 作者:cpayinyuan -- 发布时间:2009/6/13 16:46:00 -- 建议:建议把DatacolChanged事件变得智能一些! 大家都知道,表事件中用得最多、最重要的事件应该是Datacolchanged事件了,但很长时间一来,我一直感觉目前的这个事件用起来很别扭,最近经过认真分析,找到了问题的根源。好像目前的这个事件有点弱智,期待变得智能一些! 在一个表中,可能一个列的变动会影响到几十列发生变化;也可能几十个列的变动,都会引起同一列发生变化。 举例:假如在工资表中我们要定义:应发工资=基本工资+提成+加班费+奖金,在定义这个计算关系的时候,我们还需要先定义引发这个语句执行的条件,即(if e.datacol.name="基本工资" or e.datacol.name="提成" or e.datacol.name="加班费" or e.datacol.name="奖金" )。但实质上,只要确定了后面的这个公式,谁都能看出引发这个计算的列是哪4个,也就是说只要有了后面的计算关系公式,就已确定了引发这个语句的列只能是4个。这是一个确定的不会变化的内容,这样的检测最适合用程序来处理,让计算机完成既方便快捷,又不会产生错误,但狐表中非要让最适合计算机做的事情让用户手工来完成,每定义一个计算关系都首先定义引发计算的列,这样做造成的最直接的后果:一是造成了用户写很多原本应由计算机自动完成的重复的代码;二是会增大出错的可能性。 或许有人会说,在某些特殊情况下,自动生成的条件可能不一定完全正确。其实这个也不难解决,在改进后,仍然允许手工指定条件语句即可。即:若有手工输入的条件语句,按手工输入的条件语句执行。若没有条件语句,由系统自动检测引发事件的列,自动生成条件。这样即可完美的解决这个问题。 [此贴子已经被作者于2009-6-15 12:01:00编辑过]
|
-- 作者:blackzhu -- 发布时间:2009/6/13 17:07:00 -- 以下是引用cpayinyuan在2009-6-13 16:46:00的发言:
大家都知道,表事件中用得最多、最重要的事件应该是Datacolchanged事件了,但很长时间一来,我一直感觉目前的这个事件用起来很别扭,最近经过认真分析,找到了问题的根源。好像目前的这个事件有点弱智,期待变得智能一些! 在一个表中,可能一个列的变动会影响到几十列发生变化;也可能几十个列的变动,都会引起同一列发生变化。 举例:假如在工资表中我们要定义:应发工资=基本工资+提成+加班费+奖金,在定义这个计算关系的时候,我们还需要先定义引发这个语句执行的条件,即(if e.datacol.name="基本工资" or e.datacol.name="提成" or e.datacol.name="加班费" or e.datacol.name="奖金" )。但实质上,只要确定了后面的这个公式,谁都能看出引发这个计算的列是哪4个,也就是说只要有了后面的计算关系公式,就已确定了引发这个语句的列只能是4个。这是一个确定的不会变化的内容,这样的检测最适合用程序来处理,让计算机完成既方便快捷,又不会产生错误,但狐表中非要让最适合计算机做的事情让用户手工来完成,每定义一个计算关系都首先定义引发计算的列,这样做造成的最直接的后果:一是造成了用户写很多原本应由计算机自动完成的重复的代码;二是会增大出错的可能性。 或许有人会说,在某些特殊情况下,自动生成的条件可能不一定完全正确。其实这个也不难解决,在改进后,仍然允许手工指定条件语句即可。即:若有手工输入的条件语句,按手工输入的条件语句执行。若没有条件语句,由系统自动检测引发事件的列,自动生成条件。这样即可完美的解决这个问题。 [此贴子已经被作者于2009-6-13 16:52:35编辑过] 也许我水平不够,但我认为没有必要. |
-- 作者:mr725 -- 发布时间:2009/6/13 19:10:00 -- 似乎也有些道理,就像表达式列一样啊~ 但就是因此才有了表达式列也不一定,估计难改啊~ |
-- 作者:t_fs -- 发布时间:2009/6/13 19:18:00 -- 思路是正确的,编程也会省去诸多麻烦,就是不知能否实现?或许难改原程序,看老六的态度了。 |
-- 作者:八婺 -- 发布时间:2009/6/13 20:13:00 -- 你们都是理想主义者,我打酱油。 |
-- 作者:易狐 -- 发布时间:2009/6/13 20:28:00 -- 研究了吗?未必! 照楼主所说,RaiseDataColChanged()怎么办?根据判断条件给程序执行过程下指令,本来就是程序员做的事,这样更灵活,这种建议实际是建议老六取消判断,一切都由程序自己搞定,哈哈,微软尚不能做到此! |
-- 作者:八婺 -- 发布时间:2009/6/13 20:37:00 -- 如果自己不喜欢判断,现在:e.datarow("应发工资")=e.datarow("基本工资")+e.datarow("提成")+e.datarow("加班费")+e.datarow("奖金") 这可以的,效率高低是自己的事,各自取舍吧。 我认为合理的建议应该是: 假如DataColChanged中没有设置条件,则重置时以任一列为条件,对结果列进行重置。 [此贴子已经被作者于2009-6-13 20:56:09编辑过]
|
-- 作者:八婺 -- 发布时间:2009/6/13 20:42:00 -- 大家还是先深入一下吧,别费了半天劲写的文章让别人当成笑柄。 |
-- 作者:shxiaoya -- 发布时间:2009/6/13 21:43:00 -- 没耐心看完帖子 楼主的文字功底不咋地呀,几句话就能说清的事,非得弄一堆 [此贴子已经被作者于2009-6-13 21:59:19编辑过]
|
-- 作者:maomao410 -- 发布时间:2009/6/13 22:40:00 -- 废话太多,精简点 |