MyCommand.Fill (DtSet) не работает.Зачем? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь использовать OleDb для заполнения DataSet, но, похоже, он не работает. Я получил код с веб-сайта и очень мало знаю о подключении. Я программирую на VB.NET (2010) и Excel 2016. Что делает код: он вставляет данные ячейки в файл Excel, используя OLEDB.

Я программирую на 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.

Фактические результаты: ничего не происходит

Сообщение об ошибке: сообщение об ошибке отсутствует. Просто ничего не происходит, когда я нажимаю кнопку.

Ответы [ 3 ]

0 голосов
/ 10 мая 2019

Этот код заполняет набор данных, затем таблицу, но в 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

Я надеюсь, что это поможет.

Но я настоятельно рекомендую найти проблему, используя точки останова

0 голосов
/ 11 мая 2019

Добавьте 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
0 голосов
/ 10 мая 2019

Я собираюсь сделать снимок в темноте и сказать, удалить эту строку

Dim DataGridView1 As New DataGridView

Если случайно написано, что «DataGridView1» не объявлен, перетащите DataGridView из панели инструментов в форму

Либо добавьте созданный вами DataGridView в коллекцию элементов управления

Form1.Controls.add(DataGridView1)
...