none
Insertar registro en N-capas RRS feed

  • Pregunta

  • Buenas tardes,

    Estoy desarrollando una aplicacion en Ncapas y estoy teniendo problemas con realizar un insert.

    capa de entidades

    Public Class OrdenBE

        Private _NroOrden As Int32
        Private _Cliente As String
        Private _Producto As String
        Private _PaisEnvio As String
        Private _PaisLlegada As String
        Private _FechaEnvio As DateTime
        Private _FechaLlegada As DateTime

        Public Property NroOrden() As Int32
            Get
                Return _NroOrden
            End Get
            Set(ByVal value As Int32)
                _NroOrden = value
            End Set
        End Property
        Public Property Cliente() As String
            Get
                Return _Cliente
            End Get
            Set(ByVal value As String)
                _Cliente = value
            End Set
        End Property
        Public Property Producto() As String
            Get
                Return _Producto
            End Get
            Set(ByVal value As String)
                _Producto = value
            End Set
        End Property
        Public Property PaisEnvio() As String
            Get
                Return _PaisEnvio
            End Get
            Set(ByVal value As String)
                _PaisEnvio = value
            End Set
        End Property
        Public Property PaisLlegada() As String
            Get
                Return _PaisLlegada
            End Get
            Set(ByVal value As String)
                _PaisLlegada = value
            End Set
        End Property
        Public Property FechaEnvio() As DateTime
            Get
                Return _FechaEnvio
            End Get
            Set(ByVal value As DateTime)
                _FechaEnvio = value
            End Set
        End Property
        Public Property FechaLlegada() As DateTime
            Get
                Return _FechaLlegada
            End Get
            Set(ByVal value As DateTime)
                _FechaLlegada = value
            End Set
        End Property
    End Class

    Capa logica

    Imports DataAccessLayer
    Imports BusinessEntities
    Public Class OrdenBL
        Private oOrdenDAO As New OrdenDAO
        Public Function ListarOrdenes() As DataTable
            Return oOrdenDAO.Listar
        End Function
        Public Function InsertarOrden(ByVal oOrden As OrdenBE, ByVal flagaccion As String) As Boolean
            Return oOrdenDAO.insertar(oOrden, flagaccion)
        End Function

    capa acceso de datos

     Public Function insertar(ByVal oOrden As OrdenBE, ByVal flagaccion As String) As Boolean
            If cn.getCn.State = ConnectionState.Closed Then
                Try
                    cn.getCn.Open()
                Catch
                    Return False
                End Try
            End If
            If flagaccion = "I" Then
                Try
                    Using trx As MySqlTransaction = cn.getCn.BeginTransaction(IsolationLevel.ReadUncommitted)
                        Try
                            Dim cmd As New MySqlCommand("Insert into Clientes Values(?NROORDEN,?CLIENTE,?PRODUCTO,?PAISENVIO,?PAISLLEGADA,?FECHAENVIO,?FECHALLEGADA)", cn.getCn)
                            With cmd.Parameters
                                .Add("?NROORDEN", MySqlDbType.Int32).Value = oOrden.NroOrden
                                .Add("?CLIENTE", MySqlDbType.VarChar, 100).Value = oOrden.Cliente
                                .Add("?PRODUCTO", MySqlDbType.VarChar, 100).Value = oOrden.Producto
                                .Add("?PAISENVIO", MySqlDbType.VarChar, 30).Value = oOrden.PaisEnvio
                                .Add("?PAISLLEGADA", MySqlDbType.VarChar, 30).Value = oOrden.PaisLlegada
                                .Add("?FECHAENVIO", MySqlDbType.DateTime).Value = oOrden.FechaEnvio
                                .Add("?FECHALLEGADA", MySqlDbType.DateTime).Value = oOrden.FechaLlegada
                                Dim i As Integer = cmd.ExecuteNonQuery()
                                MsgBox(i.ToString + "Registro Insertado")
                                trx.Commit()
                                Return True
                            End With
                        Catch ex As Exception
                            trx.Rollback()
                        End Try
                    End Using
                Catch ex As Exception
                    Throw New Exception(ex.Message)
                End Try
            End If
        End Function

    UI

     Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click
            flagaccion = "I"
            Dim oO As New OrdenBE
            With oO
                .NroOrden = txtNroOrden.Text
                .Cliente = cboCliente.Text
                .Producto = cboProducto.Text
                .PaisEnvio = CboPaisSalida.Text
                .PaisLlegada = cboPaisDestino.Text
                .FechaEnvio = dtpEnvio.Text
                .FechaLlegada = dtpLlegada.Text
            End With
            Try
                If oOrdenBL.InsertarOrden(oO, flagaccion) Then
                    FrmListadoOrden.DataGridView1.DataSource = oOrdenBL.ListarOrdenes
                    flagaccion = ""
                    MessageBox.Show("la orden ha sido ingresado")
                    txtNroOrden.Text = oOrdenBL.ObtenerIdOrden
                    limpia()
                End If
            Catch ex As Exception
                MessageBox.Show("ERROR")
            End Try
        End Sub

    El detalle esta en que el capa de acceso a datos, en la clase OrdenDAO siempre terminan en el catch y efectua rollback y en la interfaz debido a eso muestra el mensaje error.

    Alguna idea de que pueda estar pasando?

    PD: he hecho 2 mantemientos (productos y empleados) de la misma manera y funcionan bien.

    De antemano gracias

    Atte.

    Alex

    • Cambiado Enrique M. Montejo martes, 26 de junio de 2012 21:32 acceso a datos (De:Lenguaje VB.NET)
    jueves, 21 de junio de 2012 20:50

Todas las respuestas

  • cual seria el error ? porque si has puesto una imagen no se puede visualizar

    lo que si recomendaria es que defineas los campos

    Insert into Clientes (campo1, campo2, capo3, ....) Values (

    no es bueno dejas sin los campos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    jueves, 21 de junio de 2012 20:56