例如:表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留在完成了其他行的编辑任务以后再改,那还能触发事件吗?我想是不行的吧!
请高手解释一下这里面的判断机制和顺序问题。帮助里面的例子简单了!
这个例子很简单,不用表单!
请老大作答
因为帮助里面没说清楚啊!
这实际就是一下嵌套运算的事件触发顺序问题。
select case e.datacol.name
case 1,2,3
e.datarow(4) = 代码
Case 4
e.datarow(8) = 代码
case 6,7,9
if e.datacol.name = 6 orelse e.datacol.name = 7 then
e.datarow(5) = 代码
end if
if e.datacol.name = 6 orelse e.datacol.name = 9 then
e.datarow(10) = 代码
end if
case 5,8
e.datarow(9) = 代码
end select
[此贴子已经被作者于2009-7-23 10:02:47编辑过]
这样来,效果是不是一样?
with e.datacol
if .name=1 or .name=2 or .name=3 then
e.datarow(4)=代码
end if
if .name=4 or .name=1 or .name=2 or .name=3 then
e.datarow(8)=代码
end if
if .name=6 or .name=7 then
e.datarow(5)=代码
end if
if .name=6 or .name=9 then
e.datarow(10)=代码
end if
if .name=5 or .name=8 then
e.datarow(9)=代码
end if
end with
我想,这样子意思差不多的,但效率可能要差很多,特别是第二段以后会重复触发事件。
老大能说说这方面的经验吗?
比如:先怎样确定判断范围,再怎样分化范围??
[此贴子已经被作者于2009-7-23 9:50:44编辑过]
我在6楼给的代码最好,不会重复触发。
[此贴子已经被作者于2009-7-23 10:00:49编辑过]
给一些经验吧!
比如:先怎样确定判断范围,再怎样分化范围??