none
Error en capa de Datos RRS feed

  • Pregunta

  • Estimado me sale este error, en el layer data

    Veran cree un campo en la tabla y modifique el agregar del store procedure, y agrege el campo CStr(txtGuia.Text)  para que guarde en la tabla.

    el codigo de mi guardar es: 

    Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click
    
            If txtcodigo.Text <> "" Then
                If TblDet.Rows.Count > 0 Then
                    ' Grabando la cabecera de la Facturación 
                    Dim XG As Integer
                    XG = ObjFactura.AgregarFactura("Sp_GrabarFactura", _
                    Me.txtFactura.Text, XCodCli, CDbl(Me.txtSubtotal.Text), _
                    CDbl(Me.txtIgv.Text), CDbl(Me.txtTotal.Text), CDate(Label2.Text), CStr(txtGuia.Text), 0)
                    If XG = 1 Then
                        MsgBox("Factura Registrada")
                    End If
                    'Grabando Detalle de la Factura 
                    Dim XD As Integer
                    Dim I As Integer
                    For I = 0 To TblDet.Rows.Count - 1
                        XD = ObjFactura.AgregarDetalle("Sp_GrabarDetalle", Me.txtFactura.Text, _
                        TblDet.Rows(I)(0), TblDet.Rows(I)(2), 0, TblDet.Rows(I)(3))
                    Next
                    If XD = 1 Then
                        MsgBox("Detalle Registrado de la Factura Nro" & Space(1) & Me.txtFactura.Text)
                        ClearControl()
                        correlativo()
                    End If
                Else
                    MessageBox.Show("Debe agregar al menos un producto a vender", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)
                End If
                
            Else
                MessageBox.Show("Elija el cliente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)
            End If
    
        End Sub

    y el procedure es esto:

    Procedure [dbo].[Sp_GrabarFactura] 
    @Num_Fact char(6), 
    @Cod_cli char(5), 
    @Sub_Total decimal(8,2), 
    @Igv decimal(8,2), 
    @total decimal(8,2), 
    @fecha smalldatetime, 
    @FgEli Bit,
    @guia varchar(50) 
    As 
    Insert Into Facturas (Num_fact,Cod_Cli,sub_total,Igv,total,fecha,FgEli, guia) 
    Values(@Num_fact,@Cod_Cli,@Sub_Total,@igv,@total,@fecha,@FgEli, @guia)

    por favor una ayuda


    Cristian

    martes, 23 de julio de 2013 19:19

Respuestas

  • Hola tienes que poner la guia después que el cero

    CDbl(Me.txtIgv.Text), CDbl(Me.txtTotal.Text), CDate(Label2.Text), 0, CStr(txtGuia.Text))


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 23 de julio de 2013 19:53

Todas las respuestas

  • Hola tienes que poner la guia después que el cero

    CDbl(Me.txtIgv.Text), CDbl(Me.txtTotal.Text), CDate(Label2.Text), 0, CStr(txtGuia.Text))


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 23 de julio de 2013 19:53
  • Hola, gracias funciono.

    Una consulta, por que despues del 0 ??


    Cristian

    • Propuesto como respuesta Pedro Ávila martes, 23 de julio de 2013 20:11
    • Votado como útil Pedro Ávila martes, 23 de julio de 2013 20:11
    martes, 23 de julio de 2013 20:01
  • Es que debe estar ordenado según el orden que declaras tus parámetros en el store procedure.

    También te recomiendo que uses parámetros así como este ejemplo.

    Public Sub GrabarVenta(ByVal ven As E.clsVentaE, ByVal dven As E.clsDetalleVentaE, ByVal DBArt As E.clsDetalleBodegaArticuloE, ByVal codDetMov As Integer, ByVal codMovi As Integer, ByVal codUser As String, ByVal codAfectado As Integer)
    
            Using cn As DbConnection = clsConexionAD.Conectar
                cn.Open()
                Dim t As DbTransaction = cn.BeginTransaction
                Dim cmd As DbCommand = cn.CreateCommand
                cmd.Transaction = t
                cmd.CommandText = "xspInsertarVenta"
                cmd.CommandType = CommandType.StoredProcedure
                With cmd.Parameters
                    .Add(CreateParameter("@idVenta", DbType.Int32, ven.IdVenta))
                    .Add(CreateParameter("@idCliente", DbType.Int32, ven.IdCliente))
                    .Add(CreateParameter("@idTipoDocumento", DbType.Int32, ven.IdTipoDocumento))
                    .Add(CreateParameter("@ptoCodigo", DbType.AnsiString, ven.PtoCodigo, 3))
                    .Add(CreateParameter("@locCodigo", DbType.AnsiString, ven.LocCodigo, 3))
                    .Add(CreateParameter("@numFactura", DbType.AnsiString, ven.NumFactura, 18))
                    .Add(CreateParameter("@autorizacion", DbType.AnsiString, ven.Autorizacion, 15))
                    .Add(CreateParameter("@subTotal", DbType.Single, ven.SubTotal))
                    .Add(CreateParameter("@valorIva", DbType.Single, ven.ValorIva))
                    .Add(CreateParameter("@total", DbType.Single, ven.Total))
                    .Add(CreateParameter("@estado", DbType.AnsiStringFixedLength, ven.Estado, 1))
                    .Add(CreateParameter("@usuCodigo", DbType.AnsiString, ven.UsuCodigo, 10))
                End With
                Try
                    cmd.ExecuteNonQuery()
                    For Each fila As DataRow In detalleTemp.Rows
                        cmd.CommandType = CommandType.StoredProcedure
                        cmd.CommandText = "xspInsertarDetalleVenta"
                        cmd.Parameters.Clear()
                        With cmd.Parameters
                            .Add(CreateParameter("@idVenta", DbType.Int32, dven.IdVenta))
                            .Add(CreateParameter("@idCliente", DbType.Int32, dven.IdCliente))
                            .Add(CreateParameter("@idTipoDocumento", DbType.Int32, dven.IdTipoDocumento))
                            .Add(CreateParameter("@idArticulo", DbType.AnsiString, fila("Código"), 6))
                            .Add(CreateParameter("@cobraIva", DbType.AnsiStringFixedLength, dven.CobraIva, 1))
                            .Add(CreateParameter("@cantidad", DbType.Single, fila("Cantidad")))
                            .Add(CreateParameter("@precio", DbType.Single, fila("Precio")))
                            .Add(CreateParameter("@subTotal", DbType.Single, fila("Monto")))
                        End With
                        cmd.ExecuteNonQuery()
    
                        cmd.CommandText = "xspAfectaDetalleBodegaArticulo"
                        cmd.CommandType = CommandType.StoredProcedure
                        cmd.Parameters.Clear()
                        With cmd.Parameters
                            .Add(CreateParameter("@idBodega", DbType.AnsiString, DBArt.IdBodega, 2))
                            .Add(CreateParameter("@idArticulo", DbType.AnsiString, fila("Código"), 6))
                            .Add(CreateParameter("@idMovimiento", DbType.Int32, DBArt.IdMovimiento))
                            .Add(CreateParameter("@cantidad", DbType.Int32, fila("cantidad")))
                        End With
                        cmd.ExecuteNonQuery()
    
                    t.Commit()
    
                Catch ex As Exception
                    mensaje = ex.Message
                    t.Rollback()
    
                End Try
            End Using

    Usando parámetros evitas a que te hagan injection en la DB. Te dejo este link para que le des una leída 

    http://geeks.ms/blogs/rcorral/archive/2009/12/28/como-detectar-cuando-las-consultas-no-parametrizadas-da-241-an-el-rendimiento-de-sql-server-y-que-hacer.aspx

      Si me respuesta te ayudo a resolver tu problema marcala como respuesta o si te ayudo en algo marcala como util

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila martes, 23 de julio de 2013 20:09 xxxxxxxxxxxxxxx
    martes, 23 de julio de 2013 20:08
  • Gracias doctor

    Cristian

    martes, 23 de julio de 2013 20:10
  • http://msdn.microsoft.com/en-us/library/ms161953(v=sql.105).aspx

    No te olvides de cerrar el hilo marcando como respuesta, así le sirve a otros usuarios que tengan el mismo problema.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila martes, 23 de julio de 2013 20:15 xxxxxxxxxxx
    martes, 23 de julio de 2013 20:14