none
Enviar datos de un excel a sql con conexion por odbc RRS feed

  • Pregunta

  • Buenos días

    Estoy intentando enviar datos desde un excel alojado en mi escritorio a sql con visual haciendo la conexión por odbc.

    Cuando ejecuto el programa, salta un mensaje donde nos avisa que la conexión esta hecha. Luego seleccionamos el excel a importar y ponemos el nombre de la Hoja donde estarán nuestros datos, ahí es donde me salta el fallo.

    Aquí os dejo el código a ver si alguno me puede orientar un poco porque llevo poco tiempo y no se por donde salir.

    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    
    Module Module1
        Public ds As New DataSet
        Public da As OleDbDataAdapter
        Public conn As OleDbConnection
    
        Public sqlBC As SqlBulkCopy
        Public cnn As String
    
        Sub NuevaConexion()
            Try
                cnn = "Dsn=test99;system=192.168.1.1;uid=J;dbq=test99 test99;dftpkglib=TEST99;languageid=ENU;pkg=TEST99/DEFAULT(IBM),2,0,1,0,512;qrystglmt=-1"
                MessageBox.Show("Conectado")
            Catch ex As Exception
                MessageBox.Show("No se pudo conectar")
            End Try
        End Sub
    
        Sub ExceltoDB2()
            ' Busca el archivo excel
            Dim myFileDialog As New OpenFileDialog()
            'almaceno el nombre de la hoja
            Dim xSheet As String = ""
    
            With myFileDialog
                ' filtramos por archivos .xls
                .Filter = "Excel Filter |*.xls"
                .Title = "Open File"
                .ShowDialog()
            End With
            ' si la ruta es valida
            If myFileDialog.FileName.ToString <> "" Then
                'guardamos en la variable ExcelFile la ruta del excel
                Dim ExcelFile As String = myFileDialog.FileName.ToString
                ' abrimos una pantalla donde nos pide el nombre del excel
                xSheet = InputBox(" Pon el nombre de las ENTRADAS que vamos a importar", "Completado")
                ' conectamos con el excel con la cadena PROVIDER y le decimos que la primera fila son titulos con  EXTENDED
                conn = New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" & "data source=" & ExcelFile & "; " & "Extended Properties='Excel 8.0; HDR:YES;IMEX=1'")
    
                Try
                    conn.Open()
                    'sacamos la informacion del excel
                    da = New OleDbDataAdapter("select * from [" & xSheet & "$]", conn)
                    'llenamos el dataset con la informacion optenida con el adaAdapter
                    ds = New DataSet
                    da.Fill(ds)
    
                    sqlBC = New SqlBulkCopy(cnn)
                    'seleccionamos el destino de la informacion
                    sqlBC.DestinationTableName = "ALMAB"
                    'enviamos la informacion del DS a la tabla ALMAB
                    sqlBC.WriteToServer(ds.Tables(0))
                Catch ex As Exception
                    MsgBox("Error" + ex.ToString, MsgBoxStyle.Information, "Informacion")
                Finally
                    'cerramos conexion
                    conn.Close()
                End Try
            End If
        End Sub
    
    
    
    
    End Module

    Este es el error que me saca por pantalla el visual.

    Palabra clave no admitida "dsn"

    Gracias 

    viernes, 10 de julio de 2020 12:45

Todas las respuestas

  • Hola  ramirez33,

      

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comparto a continuación los siguientes enlaces que contienen documentación oficial y un caso similar al que nos estas reportando. 

      

    https://social.msdn.microsoft.com/Forums/es-ES/0f6edd44-ceeb-450b-ba34-5a718cb151ea/enviar-datos-de-excel-a-sql-server-2008-atraves-de-visual-basic-2010?forum=vbes

    Gracias por usar los foros de MSDN. 

      

    Andres Aguilar 

      

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    viernes, 10 de julio de 2020 17:33
    Moderador