Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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...
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.
tenta alterar o tipo de campo do BD para DOUBLE PRECISION.
e coloca aki sua string do SQL para analizarmos o que esta errado.
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 NOT NULL,
[fkPedido] [bigint] NOT NULL,
[fkItem] [bigint] NOT NULL,
[fkLoja] [bigint] NOT NULL,
[quantidade] decimal NOT NULL, --AQUI a quantidade DECIMAL.
)
Cara estou levando um verdadeiro KCT... disso, estou procurando algo semelhante no google mas ta dificil.
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.
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.
qual banco de dados você esta usando???
tente substituir a "," por "." na separacao de decimais...