VB.net if else转换为case select

时间:2015-05-06 09:09:21

标签: vb.net if-statement

嗨大伙可以帮我转换成case select语句,这是我第一次使用case select语句。

If TabControl1.SelectedTab Is tp_5 Then
      myqry = "SELECT * FROM TBLVLAN5 ORDER BY ID"
ElseIf TabControl1.SelectedTab Is tp_7 Then
      myqry = "SELECT * FROM TBLVLAN7 ORDER BY ID"

我在网上搜索但是我只找到了使用整数和字符串的case select语句,而不是那个适合我的if else示例的语句。

我也尝试使用它,但它不起作用,这是我的代码。

Dim h As String
    h = TabControl1.SelectedTab Is tp_10
    Select Case h
        Case TabControl1.SelectedTab Is tp_5
            myqry = "SELECT * FROM TBLVLAN5 ORDER BY ID"
        Case TabControl1.SelectedTab Is tp_7
            myqry = "SELECT * FROM TBLVLAN7 ORDER BY ID"
        Case TabControl1.SelectedTab Is tp_8
            myqry = "SELECT * FROM TBLVLAN8 ORDER BY ID"
    End Select

非常感谢任何帮助。 感谢。

3 个答案:

答案 0 :(得分:2)

您无法使用Select...Case将参考与Is进行比较,请使用If...Else

If TabControl1.SelectedTab Is tp_5 Then
      myqry = "SELECT * FROM TBLVLAN5 ORDER BY ID"
ElseIf TabControl1.SelectedTab Is tp_7 Then
      myqry = "SELECT * FROM TBLVLAN7 ORDER BY ID"  
...
End If

另外,我热烈建议将Option Strict设为ON

Dim h As String之后没有编译,因为Is tp_10会返回BooleanOption Strict可以阻止您进行不正确的魔术编译器转换。

答案 1 :(得分:2)

一种可能的解决方案如下:

Select Case True
    Case TabControl1.SelectedTab Is tp_5
        myqry = "SELECT * FROM TBLVLAN5 ORDER BY ID"
    Case TabControl1.SelectedTab Is tp_7
        myqry = "SELECT * FROM TBLVLAN7 ORDER BY ID"
End Select

由您来决定这是否比If..Then..Else更具可读性:)

答案 2 :(得分:1)

您可以删除对If或Case语句的需要。

如果将选项卡的name属性设置为“tab_5”,则可以通过以下方式设置myqry字符串:

myqry = "SELECT * FROM TBLVLAN" + TabControl1.SelectedTab.Name.Split("_")[1] + " ORDER BY ID"

这将使用Tab名称的数字部分并将其放在sql查询字符串中。