为每个循环创建多个数据表

时间:2013-08-26 14:37:27

标签: vb.net foreach datatable

我有以下子。我有一个字符串数组,例如3个字符串(a,b,c)。我想用excelsheets中的数据填充数据表并命名表a,b,c。

Sub create_Dataset(ByVal ParamArray DataTableNames() As String)
For Each FileElement In DataTableNames
...
MyConnection.Open()
da.Fill(DS, FileElement)
MyConnection.Close()
Dim dt As DataTable = DS.Tables(FileElement)
Form1.DataGridView1.DataSource = DS.Tables(0)
Form1.DataGridView2.DataSource = DS.Tables(1)

运行此代码会给我一个错误“ds.Tables(1)不存在。根据我的理解,这是因为我只创建了一个表(Dim dt As DataTable = DS.Tables(FileElement))并将数据放入这个表一遍又一遍。但是我如何为每个数组元素创建一个表?

2 个答案:

答案 0 :(得分:0)

您需要将新的DataTable显式添加到DataSet的Tables集合中:

Sub create_Dataset(ByVal ParamArray DataTableNames() As String)
   Dim DT as DataTable
   MyConnection.Open()

   For Each FileElement In DataTableNames
   ...
       DT = New DataTable(FileElement)
       da.Fill(DT)
       DS.Tables.Add(DT)
   Next

   MyConnection.Close()

   Form1.DataGridView1.DataSource = DS.Tables(0)
   Form1.DataGridView2.DataSource = DS.Tables(1)

答案 1 :(得分:0)

你没有DS.Tables(1)......

Sub create_Dataset(ByVal ParamArray DataTableNames() As String)
    Dim DS As New DataSet 

    MyConnection.Open()
    For Each FileElement In DataTableNames
        ...

        da.Fill(DS, FileElement)
    Next
    MyConnection.Close()

    Form1.DataGridView1.DataSource = DS.Tables(0)
    Form1.DataGridView2.DataSource = DS.Tables(1)
End Sub