以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于Select Case。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=7830) |
-- 作者:wcs -- 发布时间:2010/8/10 16:35:00 -- 关于Select Case。 有这样一段代码,写在 表A 的 datachanged 事件中: Select
Case e.datacol.name 代码......(会引用第一列,第二列,第三列,第四列,第五列的)
这段代码中的“第一列,第二列,第三列,第四列,第五列”,是or的关系还是and的关系?
我的“第一列,第二列,第三列,第四列,第五列”全部用数据填充器记入表A。
现在我想讨论一下填充的顺序,是一行一行地填充还是一个单元格一个单元格地填充的?
如果一行一行地填充,那么 Case 第一列,第二列,第三列,第四列,第五列 是or的关系还是and的关系无所谓了,因为它们总是一起来的,一起触发事件代码。
如果是一个单元格一个单元格地填充,且它们是OR的关系,那么 Case 第一列,第二列,第三列,第四列,第五列 的效率很低,因为要触发5次。
我测试了一下,如果我这样 Case 第一列,第二列 把它们看作一行一行地填充来的,想效率高一点,那么代码不能正确执行(这是不是因为第三列,第四列,第五列不能正确引用?)
现在我用Case 第一列,第二列,第三列,第四列,第五列 ,来执行代码,如果是OR的关系的话,那效率很低。
我想要的目标是,当第一列,第二列,第三列,第四列,第五列数据都变化以后,再执行代码。
各位有效率高一点的方法吗?
|
-- 作者:狐狸爸爸 -- 发布时间:2010/8/10 16:39:00 -- 是or的关系 |
-- 作者:wcs -- 发布时间:2010/8/10 16:55:00 -- 那就是说要触发5次吗?
有没有效率高一些的方法? |
-- 作者:狐狸爸爸 -- 发布时间:2010/8/10 16:59:00 -- 我没有看懂你的问题,不好说 |
-- 作者:blackzhu -- 发布时间:2010/8/10 17:03:00 -- 如果这样你不如试用最后一列的变化作代码 |
-- 作者:mr725 -- 发布时间:2010/8/10 17:23:00 -- 其实充填后如果行数不多的话, 感觉不到速度快慢的. 要不,在充填代码后直接设置计算代码比较一下两者谁更快? |
-- 作者:wcs -- 发布时间:2010/8/10 18:17:00 -- 我想要的目标是,当第一列,第二列,第三列,第四列,第五列数据都变化以后,再执行代码。
但是 Select
Case e.datacol.name
是或者的关系,有任何一列的值变化了,就要执行一次代码。
所以这样效率很低。
我在寻找效率高一些的方法,我想这五列的数据都变化了以后,再执行代码,这样只会执行一次,当然效率高些。
有没有好的办法呢? |
-- 作者:czy -- 发布时间:2010/8/10 18:48:00 -- 1、2、3、4、5列的数据是怎么来的? |
-- 作者:wcs -- 发布时间:2010/8/10 22:04:00 -- 用数据填充器取来的。
我不知道是一行一行取来的,还是一个单元格一个单元格取来的。
如果是后者,那我的代码效率就低了,要触发5次。 [此贴子已经被作者于2010-8-10 22:05:54编辑过]
|
-- 作者:czy -- 发布时间:2010/8/10 22:09:00 -- 如果用填充的话就不要在datachanged事件中放这样的代码了,或者填充时关闭执行代码的执行。 填充完成后用For Each语句计算指定列即可,这样速度应该会有大幅提升的。 |