Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/12/2012, 09:45
heruxz
 
Fecha de Ingreso: noviembre-2012
Ubicación: caracas
Mensajes: 53
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Trabajar con transacciones en VB.NET 2010

Código:
Imports System.Data.OleDb 'Importacion necesaria para trabajar con ficheros excel

Public Class frmInclusionantiguaop
    Dim myTrans As MySqlTransaction

    'EVENTO CLICK DEL BOTON XLSX
    Private Sub btnXLS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXLSX.Click
        'Instanciamos nuestro cuadro de dialogo
        Dim openFileDialog1 As New OpenFileDialog
        'Directorio Predeterminado
        openFileDialog1.InitialDirectory = "C:\"
        'Filtramos solo archivos con extension *.xlsx
        openFileDialog1.Filter = "Archivos de Microsoft Office Excel (*.xlsx)|*.xlsx"
        'Si se presiona abrir entonces...
        If openFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            'Asignamos la ruta donde se almacena el fichero excel que se va a importar
            txtRutaXLS.Text = openFileDialog1.FileName

            'Instanciamos nuestra cadena de conexion especial para excel,indicando la ruta del fichero
            Dim cadconex As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Me.txtRutaXLS.Text.Trim & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"""
            Dim cn As New OleDb.OleDbConnection(cadconex)
            Dim cmd As New OleDbCommand
            Dim da As New OleDb.OleDbDataAdapter
            Dim dt As New DataTable

            cmd.Connection = cn
            'Consultamos la hoja llamada GENERAL$ de nuestro archivo *.xlsx
            cmd.CommandText = "select * from [GENERAL$]"
            cmd.CommandType = CommandType.Text
            da.SelectCommand = cmd
            'Llenamos el datatable
            da.Fill(dt)
            'Llenamos el Datagridview
            dgvImportacion.DataSource = dt
            'Ajustamos las columnas del DataGridView
            dgvImportacion.AutoSizeColumnsMode = 6
        End If
    End Sub
    Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
        Me.Visible = False
        Me.Dispose()
        frmMenu.Show()
    End Sub

    Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        Dim cn As New MySqlConnection(frmConexion.ConexionMySQL)
        cn.Open()

        Try
            myTrans = cn.BeginTransaction()

            Dim sqli As String = "INSERT INTO operaciones (no,campo1, campo2,campo3) VALUES (@no,@campo1,@campo2,@campo3)"

            'Recorremos el Datagridview
            For Each fila As DataGridViewRow In dgvImportacion.Rows

                'Dependiendo del Datagrid se colocan las filas
                Dim cmd As New MySqlCommand(sqli, cn)
                cmd.Transaction = myTrans
                cmd.Parameters.AddWithValue("@no", fila.Cells(1).Value)
                cmd.Parameters.AddWithValue("@campo1", fila.Cells(2).Value)
                cmd.Parameters.AddWithValue("@campo2", fila.Cells(3).Value)
                cmd.Parameters.AddWithValue("@campo3", fila.Cells(4).Value)
                

                'Ejecutar instruccion sql Insert
                cmd.ExecuteNonQuery()

                myTrans.Commit()
            Next
            MessageBox.Show("Registros Ingresados con Exito...")

        Catch ex As Exception
            myTrans.Rollback()
            'Anunciamos el error si lo hay
            MsgBox(ex.Message.ToString)
            MsgBox("no se pudo cargar a la base de datos")
        End Try
        cn.Close()
    End Sub
End Class
Ahora lo tengo asi pero en el mytrans.Rollback me tira el siguiente error No se controlo InvalidOperationException

AYUDA POR FAVOR

Última edición por heruxz; 06/12/2012 a las 09:54