Problema al actualizar un campo Float

28/07/2005 - 11:16 por Javier | Informe spam
Hola:
Estoy trabajando con SQL Server CE y tengo un problema a la hora de
actualizar una fila que es de tipo Float. Creo que el problema esta
relacionada con el hecho de que el emulador de Pocket PC q utilizo con Visual
Studio se supone que esta en cultura inglesa, y por lo tanto representa los
valores float con un . mientras que en la española se hace con un ,
Total, que tengo estos 2 fragmentos de codigo, para la insercion y para la
actualizacion y mientras la insercion funciona perfectamente la actualizacion
no:

SqlCeCommand comandoSQL =
new SqlCeCommand("INSERT INTO Articulos (Id_Articulo, Nombre, Stock,
NombreProveedor, PrecioActual) VALUES (?, ?, ?, ?, ?)");

comandoSQL.Parameters.Add(new SqlCeParameter("Id_Articulo", SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("Nombre", SqlDbType.NVarChar,
100));
comandoSQL.Parameters.Add(new SqlCeParameter("Stock", SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("NombreProveedor",
SqlDbType.NVarChar, 200));
comandoSQL.Parameters.Add(new SqlCeParameter("PrecioActual",
SqlDbType.Float));

comandoSQL.Parameters["Id_Articulo"].Value = id_Articulo;
comandoSQL.Parameters["Nombre"].Value = nombre;
comandoSQL.Parameters["Stock"].Value = stock;
comandoSQL.Parameters["NombreProveedor"].Value = nombreProveedor;
comandoSQL.Parameters["PrecioActual"].Value = precioActual;


Esa es la inserción y la actualización es asi:
SqlCeCommand comandoSQL = new SqlCeCommand("UPDATE Articulos SET Nombre = ?,
Stock = ?, NombreProveedor = ?, PrecioActual = ? WHERE Id_Articulo = ?");
comandoSQL.Parameters.Add(new SqlCeParameter("Id_Articulo", SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("Nombre", SqlDbType.NVarChar,
100));
comandoSQL.Parameters.Add(new SqlCeParameter("Stock", SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("NombreProveedor",
SqlDbType.NVarChar, 200));
comandoSQL.Parameters.Add(new SqlCeParameter("PrecioActual",
SqlDbType.Float));

comandoSQL.Parameters["Id_Articulo"].Value = id_Articulo;
comandoSQL.Parameters["Nombre"].Value = nombre;
comandoSQL.Parameters["Stock"].Value = stock;
comandoSQL.Parameters["NombreProveedor"].Value = nombreProveedor;
comandoSQL.Parameters["PrecioActual"].Value = precioActual;


Total, que aunque el codigo sea practicamente igual, cuando ejecuto la
inserción todo va perfecto pero con la actualización me salta esta excepcion
al hacer el tipico ExecuteNonQuery();
"Requested conversion is not supported"

No se que puedo hacer, dado que no se si en una PDA "de verdad" la cultura
estaria en español y por tanto no tendria ese tipo de problemas, ya que solo
he utilizado emulador.
Gracias por la información.
Un saludo.
 

Leer las respuestas

#1 Maxi
28/07/2005 - 14:40 | Informe spam
Hola Javier, te comento, todo los datos numericos para la base de datos
deben ir con ., asegurate que asi le llegue al motor


Salu2
Maxi


"Javier" escribió en el mensaje
news:
Hola:
Estoy trabajando con SQL Server CE y tengo un problema a la hora de
actualizar una fila que es de tipo Float. Creo que el problema esta
relacionada con el hecho de que el emulador de Pocket PC q utilizo con
Visual
Studio se supone que esta en cultura inglesa, y por lo tanto representa
los
valores float con un . mientras que en la española se hace con un ,
Total, que tengo estos 2 fragmentos de codigo, para la insercion y para la
actualizacion y mientras la insercion funciona perfectamente la
actualizacion
no:

SqlCeCommand comandoSQL > new SqlCeCommand("INSERT INTO Articulos (Id_Articulo, Nombre, Stock,
NombreProveedor, PrecioActual) VALUES (?, ?, ?, ?, ?)");

comandoSQL.Parameters.Add(new SqlCeParameter("Id_Articulo",
SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("Nombre", SqlDbType.NVarChar,
100));
comandoSQL.Parameters.Add(new SqlCeParameter("Stock", SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("NombreProveedor",
SqlDbType.NVarChar, 200));
comandoSQL.Parameters.Add(new SqlCeParameter("PrecioActual",
SqlDbType.Float));

comandoSQL.Parameters["Id_Articulo"].Value = id_Articulo;
comandoSQL.Parameters["Nombre"].Value = nombre;
comandoSQL.Parameters["Stock"].Value = stock;
comandoSQL.Parameters["NombreProveedor"].Value = nombreProveedor;
comandoSQL.Parameters["PrecioActual"].Value = precioActual;


Esa es la inserción y la actualización es asi:
SqlCeCommand comandoSQL = new SqlCeCommand("UPDATE Articulos SET Nombre =
?,
Stock = ?, NombreProveedor = ?, PrecioActual = ? WHERE Id_Articulo = ?");
comandoSQL.Parameters.Add(new SqlCeParameter("Id_Articulo",
SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("Nombre", SqlDbType.NVarChar,
100));
comandoSQL.Parameters.Add(new SqlCeParameter("Stock", SqlDbType.Int));
comandoSQL.Parameters.Add(new SqlCeParameter("NombreProveedor",
SqlDbType.NVarChar, 200));
comandoSQL.Parameters.Add(new SqlCeParameter("PrecioActual",
SqlDbType.Float));

comandoSQL.Parameters["Id_Articulo"].Value = id_Articulo;
comandoSQL.Parameters["Nombre"].Value = nombre;
comandoSQL.Parameters["Stock"].Value = stock;
comandoSQL.Parameters["NombreProveedor"].Value = nombreProveedor;
comandoSQL.Parameters["PrecioActual"].Value = precioActual;


Total, que aunque el codigo sea practicamente igual, cuando ejecuto la
inserción todo va perfecto pero con la actualización me salta esta
excepcion
al hacer el tipico ExecuteNonQuery();
"Requested conversion is not supported"

No se que puedo hacer, dado que no se si en una PDA "de verdad" la cultura
estaria en español y por tanto no tendria ese tipo de problemas, ya que
solo
he utilizado emulador.
Gracias por la información.
Un saludo.

Preguntas similares