【问题标题】:creating multiple datatables in for each loop为每个循环创建多个数据表
【发布时间】:2013-08-26 14:37:26
【问题描述】:

我有以下子。我有一个字符串数组,例如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)) 并将数据放入这个表一遍又一遍。但是我怎样才能为每个数组元素创建一个表呢?

【问题讨论】:

  • 将 DS 调暗为新数据集()
  • 好的。我猜你已经收到了回复。

标签: vb.net foreach datatable


【解决方案1】:

您需要将新的 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)

【讨论】:

    【解决方案2】:

    你没有 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2012-05-20
      • 2013-02-09
      • 1970-01-01
      相关资源
      最近更新 更多