none
Error de ensamblado ?? RRS feed

  • Pregunta

  • Hola a todos:

    Preciso hacer una exportación de datos de sqlcompact a mysql. Opero con la mysql versión 8.0.23 pero en packages me figura la 8.0.13 y parece ser que da conflictos y por eso sale el error. Cuando abro la referencia , si que hace referencia a la 8.0.23 pero al hacer la exportación sale el error siguiente:

    D:\images

    Este error me lo da cuando intento la exportación con los siguientes métodos:

    Private Sub ImportacExportsTablasSqlCompact40aMySql()
            Dim ContadorTotal As Long
            Me.InicioCargaModulos()
    
            Try
                Cursor = Cursors.WaitCursor
    
                lstResultados.Items.Clear()
    
                'Transferir los datos de las tablas de SQL ompact a Mysql.
                lblExportImport.Text = "Exportando / Importando Datos Tabla: " & "Empresas" '0
                ExportacionBaseDeDatos.strNombreTabla = "Empresas"
                lstResultados.Items.Add("Empresas")
                lstResultados.Items(0).SubItems().Add("Exportando")
                lstResultados.Items(0).SubItems().Add("Importando")
                lstResultados.Items(0).ImageIndex = 1
                n = ExportacionBaseDeDatos.ImportacionaMySqldesdeSqlCompact40(ExportacionBaseDeDatos.GetDataMySql()) 'Aquí salta el error nostrado.
                System.Windows.Forms.Application.DoEvents()
                lstResultados.Items(0).Remove()
                lstResultados.Items.Add("Empresas")
                lstResultados.Items(0).SubItems().Add("Correcto")
                lstResultados.Items(0).SubItems().Add("Correcto")
                lstResultados.Items(0).SubItems.Add(CStr(n))
                lstResultados.Items(0).ImageIndex = 0
                ContadorTotal = (n)
                Label21.Text = CType((n), String)
                Label24.Text = CType((n), String)
                'xx
    
    
                lblExportImport.Text = "Exportando / Importando Datos Tabla: " & "Alquileres" '1
     Public Shared Function GetDataMySql() As DataTable
            Dim cadenaConexion As String = Configuracion.CadenaConexion
    
            Dim dt As New DataTable()
    
            Using cnn As New MySqlConnection(cadenaConexion)
    
                Dim cmd As MySqlCommand = cnn.CreateCommand()
    
                Select Case strNombreTabla
                    Case "Empresas"
                        cmd.CommandText = "SELECT * FROM Empresas"
                    Case "CapCirculante"
                        cmd.CommandText = "SELECT * FROM CapCirculante"
                    /.../....
                End Select
    
                Dim da As New MySqlDataAdapter(cmd)
    
                da.MissingSchemaAction = MissingSchemaAction.AddWithKey
    
                'Rellenar el datatable con los datos del adaptador
                da.Fill(dt)
    
                ' Si no se ha producido un error, guardamos en las
                ' propiedades extendidas del objeto DataTable la
                ' consulta SQL de selección que hemos utilizado
                ' para obtener los datos de la tabla de SqlCompact.
                '
                dt.ExtendedProperties.Add("CommandText", cmd.CommandText)
    
                bolBorradoDatos = True
    
            End Using
    
            Return dt
        End Function


      Public Shared Function ImportacionaMySqldesdeSqlCompact40(dt As DataTable) As Integer
    
            ' Recorremos todas las filas del objeto DataTable  para establecer como añadido cada objeto DataRow.
            '
            For Each row As DataRow In dt.Rows
                row.SetAdded()
            Next
    
            Configuracion.CadenaConexion()
    
            Dim cnn As New MySqlConnection(ConfigurationManager.ConnectionStrings("PerseoMySql").ConnectionString)
    
            Dim transaction As MySqlTransaction = Nothing
    
            cnn.Open()
    
    
            Try
                'Procedemos a borrar los registros de las tablas antes de importar.
                Dim sql As String
    
                If strNombreTabla = "Empresas" = True Then
                    sql = "DELETE  FROM Empresas"
                ElseIf strNombreTabla = "Alquileres" = True Then
                    sql = "DELETE  FROM Alquileres"
                ElseIf strNombreTabla = "Balances" = True Then
                    sql = "DELETE  FROM Balances"
                
                End If
    
                ' Creamos el Commando
                Dim cmd1 As New MySqlCommand(sql, cnn)
    
                cmd1.ExecuteNonQuery()
                Dim nrorows As Integer = dt.Rows.Count
                If nrorows <> 0 Then
                    bolBorradoDatos = True
                Else
                    bolBorradoDatos = False
                End If
    
                transaction = cnn.BeginTransaction()
    
                ' Recuperamos la consulta SQL de selección existente en
                ' las propiedades extendidas del objeto DataTable.
                '
                Dim commandText As String = Convert.ToString(dt.ExtendedProperties("CommandText"))
    
                If (commandText = String.Empty) Then
                    Throw New ArgumentException("No se ha especificado la consulta SQL de selección.")
                End If
    
                Dim cmd As MySqlCommand = cnn.CreateCommand()
                cmd.CommandText = commandText
                cmd.Transaction = transaction
    
                Dim da As New MySqlDataAdapter(cmd)
                da.MissingSchemaAction = MissingSchemaAction.AddWithKey
    
                Dim cb As New MySqlCommandBuilder(da)
                cb.QuotePrefix = "["
                cb.QuoteSuffix = "]"
    
                ' Solamente vamos a insertar nuevos registros por lo que
                ' no hace falta configurar las propiedades UpdateCommand
                ' y DeleteCommand.
                '
                da.InsertCommand = cb.GetInsertCommand()
                ' da.UpdateCommand = cb.GetUpdateCommand()
                ' da.DeleteCommand = cb.GetDeleteCommand()
    
                ' Enviamos los datos del objeto DataTable a la base de SQL Server.
                Dim n As Integer = da.Update(dt)
    
                transaction.Commit()
    
                ' Devolvemos el número de registros afectados.
                Return n
                If n <> 0 Then
                    bolCargaDatos = True
                Else
                    bolCargaDatos = False
                End If
    
            Catch ex As Exception
                transaction.Rollback()
                Throw
    
            Finally
                ' Cerrar y destruir la conexión.
                cnn.Dispose()
    
            End Try
        End Function

    Estas dos funciones últimas son las que realizan el trabajo para la exportación a mysql y la importación desde sqlcompact.

    No se que truco o solución puedo aplicar para este caso, pero si comento, que trabaja perfectamente con inserciones, actualizaciones, creación de procesos almacenados, de tablas, etc., por código y sin ningún problema. 

    Bueno, no doy más la tabarra y si precisáis alguna aclaración con gusto la daré.

    Muchas gracias a todos.

    Gemma.

    miércoles, 27 de enero de 2021 10:04

Respuestas

  • Hola:

    Al final, le he podido solucionar, era un conflicto de dll y he procedido a anular una de ellas através de Nuget y me ha ido de fábula. Otra cosa aprendida.

    Un cordial saludo a todos.

    Gemma 

    • Marcado como respuesta gemma_campillo miércoles, 27 de enero de 2021 15:24
    miércoles, 27 de enero de 2021 15:24

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    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.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    miércoles, 27 de enero de 2021 14:06
    Moderador
  • Hola:

    Al final, le he podido solucionar, era un conflicto de dll y he procedido a anular una de ellas através de Nuget y me ha ido de fábula. Otra cosa aprendida.

    Un cordial saludo a todos.

    Gemma 

    • Marcado como respuesta gemma_campillo miércoles, 27 de enero de 2021 15:24
    miércoles, 27 de enero de 2021 15:24