ASP.NET - problema para grabar decimales

 
Vista:
sin imagen de perfil

problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 01/11/2010 17:17:24
que tal que puedo hacer para grabar decimales desde asp a sql, estyo programando orientado a objectos y me sale un error sobre convertir string a decimal
probe con decimal.parse , cdec, convert.decimal y nada me sale el mismo error, csmbie la configuacion del idioma para que me acepta comas o tildes y nada sigue igual que podria hacer en es caso, gracias
vazagho
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

RE:problema para grabar decimales

Publicado por khristian (335 intervenciones) el 02/11/2010 01:47:17
Usa parametros...
Hara la conversion necesaria.
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 02/11/2010 07:28:21
uso POO , si lo hiciera de la forma normal le pondria de la forma normal con el sqldbtype
he intentando con decimal.parse, convert.decimal,cdec y nada mira mi codigo

en la logica de negocio
Public Function Insert(ByVal item As Producto) As String
Try
Dim param() As String = {item.cod_producto, item.detalle, item.cod_categoria, item.stock_min,
item.stock_max, item.stock_actual, Decimal.Parse(CStr(item.peso_kg)), item.cod_unidad,
item.cod_moneda, Decimal.Parse(CStr(item.precio)), item.cod_estado}
Me.ExecuteNomQuery("usp_producto_Insert", param)
Catch ex As Exception
Throw ex
End Try
End Function
tengo 2 campos con decimal

en el rule
Public Shared Function Insert(ByVal item As Producto)
Try
obj.Insert(item)
Catch ex As Exception
Throw ex
End Try
End Function
y en la page
Dim item As New Producto

item.detalle = txt_detalle.Text
item.cod_categoria = ddl_categoria.SelectedValue
item.stock_min = CInt(txt_stockmin.Text)
item.stock_max = CInt(txt_stockmax.Text)
item.stock_actual = CInt(txt_stockactual.Text)
item.cod_unidad = ddl_unidad.SelectedValue
item.peso_kg = CDec(Val(Convert.ToDecimal(txt_peso.text)))
item.cod_moneda = ddl_moneda.SelectedValue
item.precio = CDec(Val(Convert.ToDecimal(txt_precio.text)))
item.cod_estado = "Est01"
item.cod_producto = CStr(RuleProducto.Insert(item))

ahora en mi sql server yo grabo con punto(.) y cuando hago la consulta aprece con coma(,) le cambien la configuracion recional para los decimales e igual, que problema tendria en mi codigo sino fuera el problema la bd
gracias
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 roger

RE:problema para grabar decimales

Publicado por roger (311 intervenciones) el 02/11/2010 13:18:31
no afecta que uses POO, igual se puede (y se debe) agregar los parametros con su respectivo tipo, en el caso de EnterpriseLibrary que estas usando el metodo se llama AddInParameter, y en vez de indicar un SqlDBType se utilizaria el DBType.
Tambien influye por ejemplo el idioma de la base de datos por ejemplo independiente de la configuracion regional del equipo, pero ese tipo de cosas son las que se evitan utilizando parametros.

Saludos
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 02/11/2010 17:03:06
que tal, y donde agregao ese dbtype en mi logica de mi insert? dbtype(item.precio),......
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 roger

RE:problema para grabar decimales

Publicado por roger (311 intervenciones) el 02/11/2010 19:47:33
lo que pasa es que como tienes actualmente los parametros es mas cómodo, pero no es precisamente la forma mas optima. Para poder agregarle el tipo se requiere algo mas de esfuerzo pero tiene sus ventajas, mira el DbType se especifica en el metodo AddInParameter pero te pide un command que es el que se va a ejecutar

dim command as DbCommand = db.GetStoredProcCommand("ProcedimientoAlmacenado")
db.AddInParameter(command, "nombreParametro", DbType.String)
'asi por cada parametro
' y para ejecutar el comando
db.ExecuteNonQuery(command)

saludos
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 02/11/2010 20:50:55
y lo que le puse en mi insert

Dim param() As String = {item.cod_producto, item.detalle, item.cod_categoria, item.stock_min,
item.stock_max, item.stock_actual, item.peso_kg, item.cod_unidad,
item.cod_moneda, item.precio, item.cod_estado}
Me.ExecuteNomQuery("usp_producto_Insert", param)

lo quito ya no va eso, al ponerle el otro codigo me sale error me dice que no hace refeencia al enterpise library poruq ya ha habido una referencia anterior que hago en ese caso?
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 02/11/2010 21:27:19
puse asi el codigo

Public Function Insert(ByVal item As Producto) As String
Try

Dim command As DbCommand = db.GetStoredProcCommand("usp_producto_Insert")
db.AddInParameter(command, "@cod_producto", DbType.String)
db.AddInParameter(command, "@detalle", DbType.String)
db.AddInParameter(command, "@cod_categoria", DbType.String)
db.AddInParameter(command, "@stock_min", DbType.Int32)
db.AddInParameter(command, "@stock_max", DbType.Int32)
db.AddInParameter(command, "@stock_actual", DbType.Int32)
db.AddInParameter(command, "@peso_kg", DbType.Decimal)
db.AddInParameter(command, "@cod_unidad", DbType.String)
db.AddInParameter(command, "@cod_moneda", DbType.String)
db.AddInParameter(command, "@precio", DbType.Decimal)
db.AddInParameter(command, "@cod_estado", DbType.String)
'Dim param() As String = {item.cod_producto, item.detalle, item.cod_categoria, item.stock_min,
' item.stock_max, item.stock_actual, item.peso_kg, item.cod_unidad,
' item.cod_moneda, item.precio, item.cod_estado}
db.ExecuteNonQuery(command)
Catch ex As Exception
Throw ex
End Try
End Function

en sp tengo el producto como output como a¡hago en ese caso ?
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por [email protected] (79 intervenciones) el 02/11/2010 22:00:42
ya lo pude solucionar, ya me deja grabar datos con decimales. gracaias
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 03/11/2010 04:39:21
como haria en el caso del update?
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 roger

RE:problema para grabar decimales

Publicado por roger (311 intervenciones) el 03/11/2010 05:47:19
es igual, el procedimiento almacenado para actualizar tendria un update en vez de un insert, pero para .net todo seria igual, con el mismo ExecuteNonQuery, con la misma forma de agregar parametros, etc, lo unico que cambia es el Procedimiento almacenado

Saludos
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 03/11/2010 07:38:54
ok, si ya me salio, me pudes ayudar con mi carrito de compras ahi he posteaod otra nota
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

RE:problema para grabar decimales

Publicado por khristian (335 intervenciones) el 03/11/2010 23:12:03
ESO NUNCA FUE POO !!!!!!!!!!!!!!!!
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
sin imagen de perfil

RE:problema para grabar decimales

Publicado por vazagho (79 intervenciones) el 04/11/2010 04:55:22
bueno yo si pude grabar y actualizar datos con campos en dcimales usando el application block y normal
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