Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Evandro Sousa

[Resolvido] Problemas com inserção de valores Decimal.

Recommended Posts

Bom dia pessoal, beleza?

Estou com um problema que não sei se é na codificação .NET ou com meu banco.

Quando tento gravar um valor decimal que se encontra desse problema por exemplo: 0,010, ou 0,100 ou 0,001, ele insere no BD 0,000. Quando tento inserir qlqr valor como por exemplo: 1,000, vai normalmente.

 

Estou utilizando C#, e salvando meus itens de pedido em um LIST<>. Ao debugar o código vi que esta indo tudo certo, até no momento de passar as informações ao BD.

 

 

Caso eu estiver aberto em lugar errado, peço por gentileza para o moderador transferir para a parte de BD SQLServer.

 

 

Abraços e obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou utilizando SQLServer.

Vou verificar aqui e falo se funcionou.

 

qual banco de dados você esta usando???

 

tente substituir a "," por "." na separacao de decimais...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Nexus, então tentei aqui trocando o "," por ".", mas tb nõ deu certo. O que aconteceu?

Na hora de inserir no banco tava o valor "0,010" ou "0.010", mas qndo inseriu no BD estava "10.000". Tem ideia do que pode ser?

Fiz as seguintes verificações:

* Verifiquei se o tipo de dado do BD era o mesmo que fiz na entidade. Ambos estão como Decimal.

* No BD eu espero um valor 6,3, estou passando "0.010", ou seja, esta dentro do permitido.

 

Bom inicialmente foi isso, não sei mais o que olhar. Tem idéia?

 

Se alguém souber e puder ajudar eu agradeço.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta alterar o tipo de campo do BD para DOUBLE PRECISION.

 

e coloca aki sua string do SQL para analizarmos o que esta errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nexus, estou utilizando SQLServer 2005 e nao tem double.

 

meu código:

 

Entidade:

 private int idItensPedido;
 private int fkPedido;
 private int fkItem;
 private int fkLoja;
 private string descricaoItem;
 private decimal quantidade; //aqui como Decimal.

 public decimal Quantidade
 {
 get { return quantidade; }
 set { quantidade = value; }
 }

 

 

 public int InserirItensPedido(List<ENT.clsItensPedido> lstItensPedido)
 {
 cmd = new SqlCommand("sp_GravaItensPedido", conn);
 cmd.CommandType = CommandType.StoredProcedure;

 int afetado = 0, i = 0;

 try
 {
 cmd.Parameters.Add("@pFkPedido", SqlDbType.BigInt, 1000, "fkPedido");
 cmd.Parameters.Add("@pFkItem", SqlDbType.BigInt, 1000, "fkItem"); 
 cmd.Parameters.Add("@pfkLoja", SqlDbType.BigInt, 1000, "fkLoja");
 cmd.Parameters.Add("@pQuantidade", SqlDbType.Decimal); //VALOR DECIMAL

 foreach (ENT.clsItensPedido itens in lstItensPedido)
 {
 cmd.Parameters["@pFkPedido"].Value = lstItensPedido[i].FkPedido;
 cmd.Parameters["@pFkItem"].Value = lstItensPedido[i].FkItem;
 cmd.Parameters["@pfkLoja"].Value = lstItensPedido[i].FkLoja;
 cmd.Parameters["@pQuantidade"].Value = lstItensPedido[i].Quantidade; //VALOR DECIMAL
 conn.Open();
 afetado = cmd.ExecuteNonQuery();
 conn.Close();
 i++;
 if (afetado == 0)
 {
 return 0;
 }
 }
 }
 catch
 {
 return 0;
 }
 finally
 {
 conn.Close();
 }
 return afetado;
 }

banco:

 

TABLE [dbo].[ItensPedido](
 [idItensPedido] [bigint] IDENTITY(1,1) NOT NULL,
 [fkPedido] [bigint] NOT NULL,
 [fkItem] [bigint] NOT NULL,
 [fkLoja] [bigint] NOT NULL,
 [quantidade] [decimal](6, 3) NOT NULL, --AQUI a quantidade DECIMAL.
)

Cara estou levando um verdadeiro KCT... disso, estou procurando algo semelhante no google mas ta dificil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nexus, acabo de tentar assim e tb não funcionou.

 

 decimal valor;
 Boolean conversao = decimal.TryParse(lstItensPedido[i].Quantidade.ToString(), out valor);

 if (conversao)
 {
 ......
 cmd.Parameters["@pQuantidade"].Value = valor;
 }

e nada ainda..

 

Seria algum problema no meu banco;? no BD dei um UPDATE colocando o valor 0.010 e ele salvou normalmente?

Sabe se tenho q configurar algo no .NET, tipo no Config??

 

Estou realmente extremamente perdido.

 

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nexus, vlw pela força, mas consegui arrumar.

 

Fiz o seguinte, no BD declarei todas minhas colunas de DECIMAL para FLOAT e na entidade, declarei tudo como DOUBLE.

 

funcionou perfeitamente.

 

 

Vlw pela força

 

Abraços.

 

Nexus, acabo de tentar assim e tb não funcionou.

 

 decimal valor;
 Boolean conversao = decimal.TryParse(lstItensPedido[i].Quantidade.ToString(), out valor);

 if (conversao)
 {
 ......
 cmd.Parameters["@pQuantidade"].Value = valor;
 }

e nada ainda..

 

Seria algum problema no meu banco;? no BD dei um UPDATE colocando o valor 0.010 e ele salvou normalmente?

Sabe se tenho q configurar algo no .NET, tipo no Config??

 

Estou realmente extremamente perdido.

 

 

Abraços.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.