判断列名的技巧

有的时候某一列可能会参与多列的计算。
例如某个表的L列由A、C、D三列计算得出,M列有A、B、E三列计算得出,N列由B、C、E三列计算得出,Q列由F列计算得出,有的用户会如下设置代码:

Select Case e.DataCol.Name
    Case
"A","C","D"
       
'L列的计算代码
    Case
"A","B","E"
       
'M列的计算代码
    Case
"B","C","E"
       
'N列的计算代码
    Case
"F"
       
'Q列计算代码
End Select

上面的代码存在严重的问题,因为如果有多个Case语句匹配条件,则只会执行第一个匹配条件的Case语句,然后直接跳到End Select语句。
假定我们修改B列,显然第二个Case语句和第三个Case语句都匹配了条件,但是只有第二个Case语句会执行,所以修改B列后,只会重算M列,而不会像我们预期的那样,重算M和N两列。

要避免这种情况,可以采用多个Select Case语句:

Select Case e.DataCol.Name
    Case
"A","C","D
"
       
'L列的计算代码
End
Select
Select
Case e.DataCol.Name
    Case
"A","B","E
"
       
'M列的计算代码
End
Select
Select
Case e.DataCol.Name
    Case
"B","C","E
"
       
'N列的计算代码
End
Select
If
e.DataCol.Name = "F"
    'Q列计算代码
End
If


本页地址:http://www.foxtable.com/webhelp/topics/2242.htm