none
Duda con sentencia SQL para agregar registros de un datatable

    Pregunta

  • Tengo un datatable llamado "dt2" lleno con varios registros.

    Lo que quiero es insertar los registros de la tabla "dt2" a una tabla "saldos" que tengo en Access.

    Utilizo esta expresión, pero no me funciona...

     comando30 = New OleDbCommand("INSERT INTO saldos (CodUsuario, CodPlan, CodCuenta, Fecha, Saldo)  SELECT CodUsuario, CodPlan, CodCuenta, Fecha, Saldo FROM dt2)", bbdd.conexion)

    Cuando hago el "comando30.executenonquery()" me dice que hay un error en la sentencia SQL.

    Alguien me puede ayudar?

    lunes, 20 de marzo de 2017 19:21

Respuestas

  • Hola:
    Si ya tienes cargado el datatable, usa algo como esto.

        Using loConexionAccess As New OleDbConnection(msCadenaAccess)
            ' Abrimos la conexión
            loConexionAccess.Open()
            'Cargar la tabla de Access con el DataTable
            lP_DataTableToTable(loDataTable, msTabla, loConexionAccess)
        End Using

        Private Sub lP_DataTableToTable(ByRef rdtDataTable As DataTable, ByVal vsTabla As String, ByVal voConexion As OleDbConnection)
            For Each row As DataRow In rdtDataTable.Rows
                'Las filas recién agregadas se consideran filas insertadas
                row.SetAdded()
            Next
            Try
                Dim loDataAdapter As OleDbDataAdapter = Nothing
                loDataAdapter = New OleDbDataAdapter("Select * From " & vsTabla, voConexion)
                Dim cmdBuilder As New OleDbCommandBuilder(loDataAdapter)
                loDataAdapter.Update(rdtDataTable)
            Catch ex As Exception
                MessageBox.Show(ex.Message, "gP_DataTableToTable", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

    Un saludo desde Bilbo
    Carlos

    lunes, 20 de marzo de 2017 20:01