Visual Basic突破了IF

时间:2014-01-20 21:49:32

标签: vb.net

我在Visual Basic中有一个函数

我希望能够在发现事件时突破IF语句。

Private Sub GetAllPrograms2()
    ListBox4.Items.Clear()
    Dim moReturn As Management.ManagementObjectCollection
    Dim moSearch As Management.ManagementObjectSearcher
    Dim mo As Management.ManagementObject
    Dim r As New Regex("(\bJava\S*|\bARR\S*|\bMicrosoft SQL Server 2\S*|\bMySQL\S*|\bPHP\S*|\bWeb C\S*|\bSmarter\S*)")
    moSearch = New Management.ManagementObjectSearcher("Select * from Win32_Product")
    moReturn = moSearch.Get
    For Each mo In moReturn
        If r.IsMatch(mo("Name").ToString) Then
            ListBox4.Items.Add(mo("Name").ToString)
        End If
        Dim s As New Regex("(\bSQL Server 2\S*)")
        If s.IsMatch(mo("Name").ToString) Then
            If mo("Name").ToString = "Microsoft SQL Server 2012" Then
                RichTextBox1.Text += "Microsoft SQL 2012 was found" + vbCrLf
            ElseIf mo("Name").ToString = "Microsoft SQL Server 2008" Then
                RichTextBox1.Text += "Microsoft SQL 2008 was found" + vbCrLf
            ElseIf mo("Name").ToString = "Microsoft SQL Server 2005" Then
                RichTextBox1.Text += "Microsoft SQL 2005 was found" + vbCrLf
            ElseIf mo("Name").ToString = "Microsoft SQL Server 2000" Then
                RichTextBox1.Text += "Microsoft SQL 2000 was found" + vbCrLf
            End If
        End If       
    Next
End Sub

所以代码正在做的是寻找“Microsoft SQL Server 2”的每个实例,它也在寻找其他项目,但我只关心“Microsoft SQL Server 2”。

如果发现“Microsoft SQL Server 2”,如果将进入另一个IF语句并查找Microsoft SQL Server 2000,Microsoft SQL Server 2005,Microsoft SQL Server 2008或Microsoft SQL Server 2012

将尝试构建的报告输出到richtextbox中的任何一个。

代码执行正常。但是,当它找到多个程序名时,有时使用SQL可能会发生10到20次。它会输出多条罚款线。

例如,它会找到:

“Microsoft SQL Server 2012数据库引擎共享” “Microsoft SQL Server 2012常用文件” 等

它将输出多行

找到了Microsoft SQL 2012 找到了Microsoft SQL 2012 等

我希望能找到一个并继续前进。

我尝试过使用for循环< 1但是由于某些原因我无法获得正确的结果。

任何可以帮助我的人都会很棒。

1 个答案:

答案 0 :(得分:1)

如果可能 - 将其限制在原始来源中(例如,在SQL中只返回一个条目暴力SELECT TOP 1)。如果这不是一个选项,您可以通过VB.NET Exit For语句退出循环

IF sql found
    output some text
    Exit For
Exit