2014-03-07 80 views
0

我试图填充组合框与阵列的所有其他元素的所有其他价值得到字符串数组

数组包含这样

(0) server 
(0) sqlInstance 
(1) server 
(1) sqlInstance 
(2) server 
(2) sqlInstance 

我要添加的所有SQLINSTANCE值数据到组合框。不知道如何做,除了可能是另一个阵列。

感谢

Private Sub GetSQLServers() 

     Dim oSQLApp As New SQLDMO.Application 
     Dim oServerNames As SQLDMO.NameList 
     Dim strServer As String 
     Dim ServerArr() As String 

     oServerNames = oSQLApp.ListAvailableSQLServers() 

     For i = 0 To oServerNames.Count 

      strServer = (oServerNames(i)) 
      ServerArr = strServer.Split("\") 

      txtSQLHost.Text = ServerArr(0) 

      For Each s As String In ServerArr 
       'value of server instance 
       cbxSQLServerNames.Items.Add(s) 
      Next 

     Next i 
    End Sub 

这是工作,我敢肯定它是不是

组合框与sqlInstances仅 的txtbox有服务器

oServerNames是填充的最好方式server \ sqlInstance

Private Sub GetSQLServers() 

     Dim oSQLApp As New SQLDMO.Application 
     Dim oServerNames As SQLDMO.NameList 
     Dim strServer As String 
     Dim ServerArr() As String 
     Dim sn As Integer = 1 

     oServerNames = oSQLApp.ListAvailableSQLServers() 

     For i = 0 To oServerNames.Count 

      strServer = (oServerNames(i)) 
      ServerArr = strServer.Split("\") 

      txtSQLHost.Text = ServerArr(0) 

      For Each s As String In ServerArr 

       'value of server instance 
       If ((sn Mod 2) = 0) Then 
        cbxSQLServerNames.Items.Add(s) 
        sn = sn + 1 
       Else 
        sn = sn + 1 
       End If 
      Next 
     Next i 
    End Sub 

使用此选项现在.. 感谢

Private Sub GetSQLServers() 

     Dim oSQLApp As New SQLDMO.Application 
     Dim oServerNames As SQLDMO.NameList 
     Dim strServer As String 
     Dim ServerArr() As String 

     oServerNames = oSQLApp.ListAvailableSQLServers() 

     For i = 0 To oServerNames.Count 

      strServer = (oServerNames(i)) 
      ServerArr = strServer.Split("\") 

      txtSQLHost.Text = ServerArr(0) 

      For Each item In oServerNames 
       Dim parts = item.Split("\") 
       Dim instance = parts(1) 
       cbxSQLServerNames.Items.Add(instance) 
      Next 

     Next i 
    End Sub 
+0

使用列表(类),数组的:缺少的东西在这里...


如果数组是这样的:

(0) server\sqlInstance (1) server\sqlInstance (2) server\sqlInstance 

你可以这样做那么无论你想要什么,你都可以发布你想要的任何元素。 – Plutonix

回答

0

试试这个:

For i = 0 To oServerNames.Count - 1 Step 2 
     Dim serverInstance = oServerNames(i) & "\" & oServerNames(i + 1) 
     cbxSQLServerNames.Items.Add(serverInstance) 
    Next i 

Count - 1因为,如果你是数10个项目,您是从0数到9

后看你的问题的来源,你说阵列看起来像这样:

(0) server 
(0) sqlInstance 
(1) server 
(1) sqlInstance 
(2) server 
(2) sqlInstance 

这是不可能的。不能有多个具有相同索引的项目。而不是

For Each item In oServerNames 
    Dim parts = item.Split("\") 
    dim instance = parts(1) 
    cbxSQLServerNames.Items.Add(instance) 
Next  
+0

这将返回server \ sqlInstance \ server \ sqlInstance \ server \ sqlInstance –

+0

它不应该返回任何内容,但会将多个“server \ sqlInstance”添加到组合框。我误解了一些东西吗? - 是的,在多次阅读您的问题后,我不认为我理解了数组的内容。你能更清楚地解释一下数组究竟包含什么? – dummy

+0

数组输入是server \ sqlInstance。分裂后(“\”)它是(0)服务器(0)实例 –