以文本方式查看主题 - 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=3669) |
-- 作者:wcs -- 发布时间:2009/7/23 0:25:00 -- [讨论] 请教关于在 datacolchanged 中进行列间计算的顺序问题? 例如:表A有10列,列为为1、2、3、4、5、6、7、8、9、10(不为合规则,但为说明方便) 其中:第4列根据1、2、3列计算, 第5列根据6、7列计算 第8列根据1、2、3、4列计算 第9列根据5、8列计算 第10列根据6、9列计算 这样能用Select Case并排写代码吗?如: select case e.datacol.name case 1,2,3 e.datarow(4) = 代码 case 6,7 e.datarow(5) = 代码 case 1,2,3,4 e.datarow(8) = 代码 case 5,8 e.datarow(9) = 代码 case 6,9 e.datarow(10) = 代码 end select 这几个 case 的顺序能不能颠倒一下? 如果用if ,能这样写吗? if e.datacol.name = 1 or e.datacol.name = 2 or e.datacol.name = 3 then e.datarow(4) = 代码 elseif e.datacol.name = 6 or e.datacol.name = 7 then e.datarow(5) = 代码 elseif e.datacol.name = 1 or e.datacol.name = 2 or e.datacol.name = 3 or e.datacol.name = 4 then e.datarow(8) = 代码 elseif e.datacol.name = 5 or e.datacol.name = 8 then e.datarow(9) = 代码 else e.datacol.name = 6 or e.datacol.name = 9 then e.datarow(10) = 代码 end if 说实话,我觉得这两种写法都好像不对! 因为我不明白系统是如何判断数据变化的,关键是顺序问题。 比如4是根据1、2、3计算出来的,那么case 1,2,3,4 只有在下一次从头开始运行select case 的代码时才能正确判断,计算8。但是,符合case 1,2,3,4 的,一定符合case 1,2,3,那不是第4列又重新计算了一次?? 另外,第二种方法,if里面的判断,如果不用or ,用 and,那是不是指1、2、3列都发生了变化才计算代码?如果是这样,那么我先改了1、2, 3留在完成了其他行的编辑任务以后再改,那还能触发事件吗?我想是不行的吧! 请高手解释一下这里面的判断机制和顺序问题。帮助里面的例子简单了! |
-- 作者:易狐 -- 发布时间:2009/7/23 2:15:00 -- 给个表简单多了! |
-- 作者:梦倩 -- 发布时间:2009/7/23 8:16:00 -- select case e.datacol.name case 1,2,3 e.datarow(4) = 代码 Case 4 e.datarow(8) = 代码 case 6 e.datarow(5) = 代码 e.datarow(10) = 代码 case 7 e.datarow(5) = 代码 case 5,8 e.datarow(9) = 代码 case 9 e.datarow(10) = 代码 end select |
-- 作者:wcs -- 发布时间:2009/7/23 8:47:00 -- 这个例子很简单,不用表单! |
-- 作者:狐狸爸爸 -- 发布时间:2009/7/23 8:57:00 -- 3楼的代码挺好的嘛 |
-- 作者:狐狸爸爸 -- 发布时间:2009/7/23 9:11:00 -- select case e.datacol.name [此贴子已经被作者于2009-7-23 10:02:47编辑过]
|
-- 作者:yangming -- 发布时间:2009/7/23 9:22:00 -- select case e.datacol.name case "第一列","第二列","第三列" e.datarow("第四列") = e.datarow("第一列")+ e.datarow("第二列") +e.datarow("第三列") Case "第四列" e.datarow("第八列") = e.datarow("第四列") *2 Case "第六列","第七列" e.datarow("第五列") = e.datarow("第六列")+e.datarow("第七列") Case "第五列","第八列" e.datarow("第九列") = e.datarow("第五列")+e.datarow("第八列") Case "第六列","第九列" e.datarow("第十列") = e.datarow("第六列")+e.datarow("第九列") end select |
-- 作者:wcs -- 发布时间:2009/7/23 9:40:00 -- 这样来,效果是不是一样? [此贴子已经被作者于2009-7-23 9:50:44编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2009/7/23 10:01:00 -- 我在6楼给的代码最好,不会重复触发。 [此贴子已经被作者于2009-7-23 10:00:49编辑过]
|
-- 作者:wcs -- 发布时间:2009/7/23 10:18:00 -- 给一些经验吧! |