MyCommand.Fill(DtSet) 不起作用。为什么?

MyCommand.Fill(DtSet) does not work. Why?

我正在尝试使用 OleDb 来填充数据集,但它似乎不起作用。 我从一个网站上获得了代码,并且对 Connection 知之甚少。 我在 VB.NET (2010) 和 Excel 2016 年编程。 代码的作用:它使用 OLEDB 在 Excel 文件中插入单元格数据。

我在 VB.NET (2010) 中编程,并稍微修改了代码以满足我的需要。

完整代码如下:

Private Sub AdxRibbonButton16_OnClick(ByVal sender As System.Object, _
   ByVal control As AddinExpress.MSO.IRibbonControl, _
   ByVal pressed As System.Boolean) _
   Handles AdxRibbonButton16.OnClick

        Try

            Dim MyConnection As System.Data.OleDb.OleDbConnection

            Dim DtSet As System.Data.DataSet

            Dim MyCommand As System.Data.OleDb.OleDbDataAdapter

            Dim DataGridView1 As New DataGridView

            MyConnection = New System.Data.OleDb.OleDbConnection _
            ("provider=Microsoft.ACE.OLEDB.12.0; Data Source='F:\testfile.xlsx'; Extended Properties=Excel 12.0;")

            MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)

            MyCommand.TableMappings.Add("Table", "TestTable")

            DtSet = New System.Data.DataSet

            MyCommand.Fill(DtSet)  '// seems problem is here

            DataGridView1.DataSource = DtSet.Tables(0)

            MyConnection.Close()

        Catch ex As Exception
            MsgBox(ex.ToString)

        End Try

    End Sub

预期结果:Excel 文件的内容应发送到 DataGrid。

实际结果:什么都没发生

错误信息:没有错误信息。单击我的按钮时没有任何反应。

我要在黑暗中拍摄并说删除这条线

Dim DataGridView1 As New DataGridView

如果碰巧显示 "DataGridView1" 未声明,则将 DataGridView 从工具箱拖到窗体上

或者,将您正在创建的 DataGridView 添加到控件集合中

Form1.Controls.add(DataGridView1)

这段代码填充了一个数据集,然后是一个 table 但它在 mysql 中,您需要进行一些更改才能与 OLedb 一起使用,但 vb.net 部分是相同的

Dim ds1 As New DataSet
    con.Open()
    Try
        da = New MySqlDataAdapter("SELECT * FROM `modes`", con)
    Catch ex As Exception
        '   s.WriteLine(Now & " The Mysql query is not possible to run down")
    End Try
    ds1.Clear()
    da.Fill(ds1)
    Dim table As DataTable = ds.Tables(0)

然后填充数据网格视图使用这个

DataGridView1.DataSource = table

希望对您有所帮助。

但我强烈建议使用断点来查找问题

在设计时添加 DataGridView1。我使用 DataTable 而不是 DataSet 和 Command 而不是 DataAdapter 稍微简化了一些事情。即使出现错误,Using 块也会确保数据库对象被关闭和释放。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dt As New DataTable
    Using MyConnection As New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0; Data Source='F:\testfile.xlsx'; Extended Properties=Excel 12.0;")
        Using MyCommand As New OleDbCommand("select * from [Sheet1$]", MyConnection)
            MyConnection.Open()
            dt.Load(MyCommand.ExecuteReader)
        End Using
    End Using
    DataGridView1.DataSource = dt
End Sub