Usuário com melhor resposta
Campo Double, nao grava corretamente !!!

Pergunta
-
Olá pessoal,
Como faço para salvar um campo double, pois estou fazendo assim... mas esta salvando 17559,00 e nao 175,59 no banco.
exemplo:
double
m_sdoinicial = 175.59;sql =
"update tb_finBanco set";sql +=
" cod_banco = @cod_banco,";sql +=
" des_banco = @des_banco,";sql +=
" cod_agencia = @cod_agencia,";sql +=
" des_agencia = @des_agencia,";sql +=
" num_conta = @num_conta,";sql +=
" obs = @obs,";sql +=
" sdoinicial = @sdoinicial,";sql +=
" limite = @limite,";sql +=
" compoesdo = @compoesdo";sql +=
" where id = @id";cmd.CommandText = sql;
cmd.Parameters.Clear();
cmd.Parameters.Add(
"@cod_banco", OleDbType.VarChar, 4).Value = m_codbanco;cmd.Parameters.Add(
"@des_banco", OleDbType.VarChar, 100).Value = m_desbanco;cmd.Parameters.Add(
"@cod_agencia", OleDbType.VarChar, 15).Value = m_codagencia;cmd.Parameters.Add(
"@des_agencia", OleDbType.VarChar, 50).Value = m_desagencia;cmd.Parameters.Add(
"@num_conta", OleDbType.VarChar, 15).Value = m_numconta;cmd.Parameters.Add(
"@obs", OleDbType.VarChar, 255).Value = m_obs;cmd.Parameters.Add(
"@sdoinicial", OleDbType.Decimal).Value = m_sdoinicial;cmd.Parameters[
"@sdoinicial"].Scale = 2;cmd.Parameters[
"@sdoinicial"].Precision = 18;cmd.Parameters.Add(
"@limite", OleDbType.Decimal).Value = m_limite;cmd.Parameters[
"@limite"].Scale = 2;cmd.Parameters[
"@limite"].Precision = 18;cmd.Parameters.Add(
"@compoesdo", OleDbType.Integer).Value = m_compoesdo;cmd.Parameters.Add(
"@id", OleDbType.Integer).Value = m_id;ret = cCON.Atualizar(cmd);
obrigado,
abraços..
Respostas
-
Rodrigo,
Opa, desculpa :-)
Duas coisas. Verifique se no campo no Access, quando você definiu ele como Number, Decimal, se você colocou o Scale dele como duas casas decimais. De repente você definiu o tipo como Number, Decimal mas não estabeleceu o número de casas decimais no banco mesmo.
A outra sugestão é tentar trocar no seu código para OleDbType.Double, ou outro tipo de ponto flutuante e fazer o mesmo no banco de dados.
Abraços,
Francisco
OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx
Todas as Respostas
-
Rafael,
Experimenta setar o Scale do parâmetro:
cmd.Parameters["@sdoinicial"].Scale = 2;
Abraços,
Francisco
OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx -
-
-
Rodrigo,
Opa, desculpa :-)
Duas coisas. Verifique se no campo no Access, quando você definiu ele como Number, Decimal, se você colocou o Scale dele como duas casas decimais. De repente você definiu o tipo como Number, Decimal mas não estabeleceu o número de casas decimais no banco mesmo.
A outra sugestão é tentar trocar no seu código para OleDbType.Double, ou outro tipo de ponto flutuante e fazer o mesmo no banco de dados.
Abraços,
Francisco
OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx -