以文本方式查看主题

-  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=114208)

--  作者:edisontsui
--  发布时间:2018/1/31 17:03:00
--  select case 疑问
Select Case e.Col.name 
    Case "票号","制造产品号","总表确认","送货日期","送货单号","卡板号"
        If e.Row("件数") > 0 
            e.Cancel = True
        End If
    Case "原料代号"
        If e.Row("重量公斤") > 0 
            e.Cancel = True
        End If
    Case  "制造产品号"
        If e.Row.IsNull("类型") = False
            e.Cancel = True
        End If
End Select

我有上面一段代码,其中"制造产品号"在第一个case和第三个case都出现过,所以第三个case的代码就不起作用了。

而如果我将第三个case改为如下所示单独一段代码,则能够起到作用。

Select Case e.Col.name 
    Case "票号","制造产品号","总表确认","送货日期","送货单号","卡板号"
        If e.Row("件数") > 0 
            e.Cancel = True
        End If
    Case "原料代号"
        If e.Row("重量公斤") > 0 
            e.Cancel = True
        End If
End Select

If e.Col.name = "制造产品号"
    If e.Row.IsNull("类型") = False
        e.Cancel = True
    End If
End If

为什么呢?谢谢。

--  作者:有点甜
--  发布时间:2018/1/31 17:14:00
--  
select case 就是这样的。每次,只会匹配一次,不是所有满足的都匹配的。
--  作者:edisontsui
--  发布时间:2018/2/1 11:37:00
--  
如果像下面那样,在一个事件里面出现多段select case 语句,是否有问题呢?


Select Case e.Col.name 
    Case "机台号","产品名称","模具名称","颜色","模腔数","周期时间"  
        e.Cancel = True
End Select

Select Case e.Col.name 
    Case "生产日期","注塑机型号","领班","开机人","指令单号","产品代号","当班指标","用料名称"
        If e.Row("生产产品数") > 0 
            e.Cancel = True
        End If
End Select 

Select Case e.Col.name 
    Case "不达标原因","改善方案","行动完成"
        If e.Row("达成率") >= 0.9 
            e.Cancel = True
        End If
End Select


--  作者:有点甜
--  发布时间:2018/2/1 11:44:00
--  

只要你逻辑没问题那就没问题。这些select case是并列的,作用重复的。