我在Visual中有一个函数
当发现事件时,我希望能够从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因此,代码所做的是查找“2”的每个实例,它也在查找其他项,但我只关心“2”。
当发现出现"Microsoft 2“时,if将进入另一个IF语句并查找Microsoft 2000、Microsoft 2005、Microsoft 2008或Microsoft 2012
它将输出到一个丰富的文本框中的任何一个,以供我试图构建的报表。
代码执行得很好。但是,当它找到多个程序名称时(有时使用SQL,可能会出现10到20个)。它输出多行,就像罚款一样多。
例如,它将发现:
“2012数据库引擎共享”“2012公共文件”等
,它将输出多行
Microsoft SQL 2012被发现,Microsoft SQL 2012被找到等
我希望它能找到一个,然后继续前进。
我试过使用for循环<1,但是由于某些原因,我无法得到正确的结果。
任何能在这方面帮助我的人都会很棒。
发布于 2014-01-20 21:55:23
如果可能的话--将其限制在原始源中(例如,在SQL中,只返回一个条目-蛮力SELECT TOP 1 )。如果这不是一个选项,您可以通过VB.NET 出口为语句退出循环
IF sql found
output some text
Exit For
Exithttps://stackoverflow.com/questions/21244840
复制相似问题