Estoy tratando de usar OleDb para llenar un DataSet, pero no parece funcionar. Obtuve el código de un sitio web y sé muy poco acerca de Connection. Programa en VB.NET (2010) y Excel 2016. Qué hace el código: inserta datos de celda en un archivo de Excel usando OLEDB.

Programo en VB.NET (2010), y modifiqué el código ligeramente para satisfacer mis necesidades.

Aquí está el código completo:

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

Resultados esperados: el contenido del archivo de Excel debe enviarse a DataGrid.

Resultados reales: nada sucede

Mensaje de error: Sin mensaje de error. Simplemente no pasa nada cuando hago clic en mi botón.

-1
Leon Lai 10 may. 2019 a las 16:01

3 respuestas

La mejor respuesta

Voy a tomar un tiro en la oscuridad y decir eliminar esta línea

Dim DataGridView1 As New DataGridView

Si por casualidad dice que "DataGridView1" no está declarado, arrastre un DataGridView desde el cuadro de herramientas al formulario

Alternativamente, agregue el DataGridView que está creando a una colección de control

Form1.Controls.add(DataGridView1)
0
Mr. Tripodi 10 may. 2019 a las 13:35

Agregue DataGridView1 en tiempo de diseño. Simplifiqué un poco las cosas usando un DataTable en lugar de un DataSet y un Command en lugar de un DataAdapter. El uso de bloques asegurará que los objetos de la base de datos estén cerrados y eliminados incluso si hay un error.

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
Mary 11 may. 2019 a las 20:58

Este código llena un conjunto de datos, luego una tabla pero está en mysql necesita algunos cambios para trabajar con OLeDb pero la parte vb.net es la misma

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)

Luego, para completar una vista de cuadrícula de datos, use esto

DataGridView1.DataSource = table

Espero que esto ayude.

Pero sugiero encarecidamente que encuentre el problema use puntos de interrupción

-2
marc_s 30 may. 2019 a las 05:30