
14/06/2008, 10:37
|
 | | | Fecha de Ingreso: noviembre-2007 Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 17 años, 2 meses Puntos: 25 | |
problemas con clases/procedure y datos decimales tengo el siguiente problema, al registrar datos DECIMALES, los otros procedures registran sin problemas :S
un procedure
Código:
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
uso una clase de este tipo:
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:
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
me envia el siguiente error al momento de ejecutar el ExecuteNonQuery:
Error al convertir el tipo de datos numeric a decimal.
cual es el error que cometo ??, gracias por su ayuda |