none
Auxilio... Como paso registros de una tabla mdb a otra de otra mdb? RRS feed

  • Pregunta

  • Hola buen dia!!!

    Necesito pasar mi tabla de clientes de una MDB a otra MDB, no se utilizar el INSERT INTO y tambien me falta la instruccion para ejecutarlo,

    Alguien podria ayudarme?

     

    DIM dt as Datatable
            Dim Conexion1 As String = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\SUC1\Base1.mdb;Jet OLEDB:Database Password=12345"
            Dim Conexion2 As String = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=c:\SUC2\Base2.mdb;Jet OLEDB:Database Password=12345"

            Dim SQL As String = "SELECT * FROM Clientes"
            Dim dataAdapter As New OleDb.OleDbDataAdapter(SQL, Conexion1)
                dataAdapter.Fill(dt)

            Dim SQL2 as String = "INSERT INTO Clientes IN " & Conexion2 & "SELECT * FROM Clientes"

    ?? con que instruccion lo ejecuto...

     

    Saludos,

    Jose Luis R

    viernes, 1 de octubre de 2010 16:11

Todas las respuestas

  • tenes que armar el sql asi

    sql="insert into clientes select " & dataadapter.fields(1).value

    y asi

    luego en la coneccion2 haces el execute del sql

    y asi por cada registro

    viernes, 1 de octubre de 2010 17:53
  • Gracias por la respuesta Luis,

     

    Eso seria para pasar registro por registro, pero si quiero pasar todos, como tendria que hacerlo?

     

    Saludos

    viernes, 1 de octubre de 2010 17:59
  • hola,

     

    una idea repidamente es haciendo un for por cada fila de la tabla y ir insertadosela por ejemplo algo haci 

     

           Dim dt As New Data.DataTable

            Dim da As New Data.SqlClient.SqlDataAdapter

            Dim rw As Data.DataRow = dt.NewRow()

     

            For i = 1 To dt.Rows.Count - 1

                Dim sql As String = "insert into clientes select " & rw(i).ToString()

            Next


    Enmanuel Grullard@Developer ASP.NET
    viernes, 1 de octubre de 2010 19:41
  • El siguiente procedimiento me permite pasar la información de 5 tablas, de un archivo mdb a otro.

    Solo hay que pasarle la ruta del archivo desde y hasta. ____ízala bién. Fíjate que es muy recursiva y el empleo de JOIN para buscar las tablas en el arreglo vector, evita el tener que escribir varias líneas.

     

    Sub adoProc(desde As String, hasta As String)
    Dim rstDesde As New ADODB.Recordset, mdbDesde As New ADODB.Connection
    Dim rstHasta As New ADODB.Recordset, mdbHasta As New ADODB.Connection
    Dim vector, cat As New ADOX.Catalog
    strVector = "Clientes,Clientes_producto,Ventas_Diarias,Factura,Factura_Detalle"
    vector = Split(strVector, ",")
    Set mdbDesde = New ADODB.Connection
        strconexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & desde & ";USer id=admin; password="
        With mdbDesde
            .ConnectionString = strconexion
            .ConnectionTimeout = 10
            .Open
        End With


    Set mdbHasta = New ADODB.Connection
        strconexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & hasta & ";USer id=admin; password="
        With mdbHasta
            .ConnectionString = strconexion
            .ConnectionTimeout = 10
            .Open
        End With
       
    cat.ActiveConnection = strconexion
    For Each tbl In cat.Tables
        pos = InStr(1, vbNullChar & Join(vector, vbNullChar) & _
                vbNullChar, vbNullChar & tbl.Name & vbNullChar)
        If pos = 0 Then
            If cat.Tables(tbl.Name).Type = "TABLE" Then 'en caso de que hay tablas en mdb.desde no listadas en vector, eliminalas
                'Debug.Print cat.Tables(tbl.Name).Type, tbl.Name
                cat.Tables.Delete tbl.Name
            End If
        End If
    Next
    Set cat.ActiveConnection = Nothing
    Set cat = Nothing


    For i = 0 To UBound(vector)
        mdbHasta.Execute "DELETE * FROM " & vector(i), cuantos
        Select Case vector(i)
            Case "Clientes"
                camposstr = "Codigo,Descripcion,Email,Saldo,Debitos,Creditos,anticipos"
                campos = Split(camposstr, ",")
            Case "Clientes_producto"
                camposstr = "CodProd,CodCli,NumeroD,PrecioP,Cantidad,FechaE"
                campos = Split(camposstr, ",")
            Case "Ventas_Diarias"
                camposstr = "Numero,IdCliente,Descripcion,TotalGeneral,TotalCancelado,Emision,Hora,TotalLetra," _
                        & "Efectivo,Anticipo,TipoDoc"
                campos = Split(camposstr, ",")
            Case "Factura"
                camposstr = "Numero,IdCliente,Descripcion,TotalCancelado,Emision,Hora,TotalLetra,Anticipo"
                campos = Split(camposstr, ",")
            Case "Factura_Detalle"
                camposstr = "Numero,Descripcion1,Precio,Cantidad,IdProducto"
                campos = Split(camposstr, ",")
        End Select
            rstHasta.Open "SELECT " & camposstr & " FROM " & vector(i), mdbHasta, 2, 2
            rstDesde.Open "SELECT " & camposstr & " FROM " & vector(i), mdbDesde, 1, 4
            If Not rstDesde.EOF Then
                Do Until rstDesde.EOF
                    With rstHasta
                        .AddNew
                        For j = 0 To UBound(campos)
                            rstHasta(campos(j)) = rstDesde(campos(j))
                        Next j
                        .Update
                    End With
                rstDesde.MoveNext
                Loop
            End If
            rstDesde.Close
            rstHasta.Close
    Next i
        Set rstDesde = Nothing
        Set rstHasta = Nothing
    mdbDesde.Close
    mdbHasta.Close
    Set mdbDesde = Nothing
    Set mdbHasta = Nothing
    End Sub

    requiere de la libreria ado ext 2.8 for dll and security

    domingo, 3 de octubre de 2010 23:32