Visual Basic.NET - Datos decimales guardados como enteros

 
Vista:
sin imagen de perfil
Val: 46
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Datos decimales guardados como enteros

Publicado por Diego (19 intervenciones) el 25/10/2018 19:40:46
Buenas tardes.
A ver si puedo explicar el tema claramente.

Tengo un sistema en VB.NET que utiliza MySql como base de datos.
Una tabla tiene un campo llamado neto_gravado tipo decimal (10,2).
Un procedimiento almacenado para agregar un registro con un parametro p_neto_gravado de tipo decimal 10,2.

Del lado de VB tengo una clase Factura con una propiedad _neto_gravado de tipo decimal.
Una funcion para guardar el registro con parametros:

cmd.Parameters.AddWithValue("p_neto_gravado", factura._neto_gravado)

En esa instruccion le asigno al parametro p_neto_gravado el valor de la propiedad _neto_gravado del objeto Factura

Obiamente estoy referenciando una sola linea, en si la funcion tiene unos 40 parametros.
Todo funciona correctamente, el registro es almacenado peeeeeero....si el parametro tiene un valor de 17.36 en la BD me regisrtra 17.00 y esto me pasa con todos los valores decimales.

No es el primer sistema que hago con esta metodología y funcionan perfecto, pero en este caso no logro ver dónde me equivoqué.

Recurro a ustedes porque hace mas de 36 horas que no duermo y ya no tengo la capacidad de encontrar el error.
Comparé el código con otros sistemas y no veo diferencias, ni en el código ni en las tablas, ni en los procedimientos almacenados......Necesito dormir, pero quiero resolver esto antes.
Debo tener la solución delante de mis ojos, pero no la veo.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 46
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Datos decimales guardados como enteros

Publicado por Diego (19 intervenciones) el 25/10/2018 21:13:44
Solucionado.
Cambié el tipo de dato en los parametros del procedimiento almacenado a float y funcionó.
No entiendo por qué pasó esto porque tengo otro sistema idéntico con el tipo de dato en decimal y funciona perfecto.

Me voy a dormir
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Datos decimales guardados como enteros

Publicado por giancarlo (488 intervenciones) el 27/10/2018 05:11:29
Cuando usas
1
cmd.Parameters.AddWithValue("p_neto_gravado", factura._neto_gravado)
sabes que tipo de dato le estas enviando al sql? IMAGINO que el visual studio toma el valor por defecto o quizas al tratarse de número lo considera como entero, asi que lo mejor que podrías hacer es:

1
2
cmd.Parameters.Add("@nomMarca", SqlDbType.decimal, 10, 2).Value = marca.nombre
cmd.CommandType = CommandType.StoredProcedure

nos comentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar