un procedure
Código:
uso una clase de este tipo:CREATE procedure usp_i_registrar_boleta @bo_codigo char(5), @bo_fecha datetime, @bo_neto decimal(5,2), @bo_descuento decimal(5,2), @bo_subtotal decimal(5,2), @bo_igv decimal(5,2), @bo_total decimal(5,2), @al_codigo char(5), @bo_cancelado bit as insert into sa_boleta values (@bo_codigo, @bo_fecha, @bo_neto, @bo_descuento, @bo_subtotal, @bo_igv, @bo_total, @al_codigo, @bo_cancelado) if (@bo_cancelado=1) begin update sa_boleta set bo_cancelado=1 where al_codigo=@al_codigo end
Código:
Imports System.Data.SqlClient Public Class cls_boleta Public bo_codigo As String Public bo_fecha As Date Public bo_neto As Single Public bo_descuento As Single Public bo_subtotal As Single Public bo_igv As Single Public bo_total As Single Public al_codigo As String Public bo_cancelado As Integer Public Function registrar_boleta() As Boolean Dim obj_conexion As New cls_conexion Dim obj_command As New SqlCommand obj_command.Connection = obj_conexion.obj_SqlConnection obj_command.CommandType = CommandType.StoredProcedure obj_command.CommandText = "usp_i_registrar_boleta" obj_command.Parameters.Add(New SqlParameter("@bo_codigo", SqlDbType.Char, 5)) obj_command.Parameters("@bo_codigo").Value = bo_codigo obj_command.Parameters.Add(New SqlParameter("@bo_fecha", SqlDbType.DateTime)) obj_command.Parameters("@bo_fecha").Value = bo_fecha obj_command.Parameters.Add(New SqlParameter("@bo_neto", SqlDbType.Decimal, 5)) obj_command.Parameters("@bo_neto").Value = bo_neto obj_command.Parameters.Add(New SqlParameter("@bo_descuento", SqlDbType.Decimal, 5)) obj_command.Parameters("@bo_descuento").Value = bo_descuento obj_command.Parameters.Add(New SqlParameter("@bo_subtotal", SqlDbType.Decimal, 5)) obj_command.Parameters("@bo_subtotal").Value = bo_subtotal obj_command.Parameters.Add(New SqlParameter("@bo_igv", SqlDbType.Decimal, 5)) obj_command.Parameters("@bo_igv").Value = bo_igv obj_command.Parameters.Add(New SqlParameter("@bo_total", SqlDbType.Decimal, 5)) obj_command.Parameters("@bo_total").Value = bo_total obj_command.Parameters.Add(New SqlParameter("@al_codigo", SqlDbType.Char, 5)) obj_command.Parameters("@al_codigo").Value = al_codigo obj_command.Parameters.Add(New SqlParameter("@bo_cancelado", SqlDbType.Bit)) obj_command.Parameters("@bo_cancelado").Value = bo_cancelado obj_conexion.conexion() obj_command.ExecuteNonQuery() ' ejecutar comando / ExecuteNonQuery devuelve el nro de filas afectadas obj_conexion.desconexion() End Function End Class
y en la interfaz envio los valores decimales almacenados en label's, previamente calculados
Código:
me envia el siguiente error al momento de ejecutar el ExecuteNonQuery:Dim obj_bol As New cls_boleta ..... With obj_bol .bo_codigo = Me.txt_bo_codigo.Text .bo_fecha = Now() .bo_neto = Val(Me.lbl_neto.Text) .bo_descuento = Val(Me.txt_descuento.Text) .bo_subtotal = Val(Me.lbl_sub_total.Text) .bo_igv = Val(Me.lbl_igv.Text) .bo_total = Val(Me.lbl_total.Text) .al_codigo = Me.txt_al_codigo.Text .bo_cancelado = Me.chk_cancelado.CheckState .registrar_boleta() End With
Error al convertir el tipo de datos numeric a decimal.
cual es el error que cometo ??, gracias por su ayuda