| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2012 22:40:42
|
Diego Lino Albares
Thread.start()
Membro desde: 11/10/2011 22:11:53
Mensagens: 37
Offline
|
Será que alguém poderia me dar um aforça com esse erro aqui?
Internal Exception: java.sql.SQLException: 'NaN' is not a valid numeric or approximate numeric value
Error Code: 0
Call: UPDATE produto SET TOTAL = ?, ESTOQUE = ?, CUSTOMEDIOPRODUTO = ? WHERE (CODIGOPRODUTO = ?)
bind => [NaN, 0, NaN, 1]
Query: UpdateObjectQuery(br.com.ControleDeEstoqueSicredi.View.Produto[codigoproduto=1])
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 06:44:38
|
abmpicoli
JavaTeenager
Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline
|
Carinha, aparentemente você está recebendo um "NaN" como parâmetro e repassando ele para o update, e isto está dando pau.
Com o que você está apresentando não dá pra resolver seu problema. Mas veja aí (isso é um PreparedStatement, né) como está a passagem dos parâmetros que estão dando NaN, e descubra porque os disgramado fidumaégua dos parâmetros estão virando NaN...
|
.x. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 11:12:14
|
Diego Lino Albares
Thread.start()
Membro desde: 11/10/2011 22:11:53
Mensagens: 37
Offline
|
Ola boa tarde abmpicoli,
Eu utilizo uma query passando parametros para ela para poder dar saída nos produtos do estoque, só que quando eu vou dar saída em todos os produtos que consta em estoque ele dá esse erro, quando na realidade ele deveria ficar com a quantidade zero, não sei o que está acontecendo, porque este infeliz está recebendo NaN, segue abaixo o código utilizado:
Double total = 0.0;
Integer estoque;
int index = masterTable.getSelectedRow();
br.com.ControleDeEstoqueSicredi.bean.Saidaproduto s = list.get(masterTable.convertRowIndexToModel(index));
Collection<br.com.ControleDeEstoqueSicredi.bean.Detalhesaida> ds = s.getDetalhesaidaCollection();
for (Detalhesaida detalhesaida : ds) {
if (detalhesaida.getQuantidadedetalhesaida() == null) {
detalhesaida.setQuantidadedetalhesaida(1);
}
detalhesaida.setTotaldetalhesaida(detalhesaida.getValorunitariodetalhesaida() * detalhesaida.getQuantidadedetalhesaida());
total = total + detalhesaida.getTotaldetalhesaida();
produtoQuery = entityManager.createNamedQuery("Produto.findByCodigoproduto");
produtoQuery.setParameter("codigoproduto", detalhesaida.getDetalhesaidaPK().getCodigoproduto());
List<Produto> data = produtoQuery.getResultList();
if(detalhesaida.getQuantidadedetalhesaida()>data.get(0).getEstoque()){
JOptionPane.showMessageDialog(null, "A Quantidade Solicitada Não Existe Em Estoque");
detalhesaida.setQuantidadedetalhesaida(null);
}
else{
data.get(0).setEstoque(data.get(0).getEstoque()-detalhesaida.getQuantidadedetalhesaida());
data.get(0).setCustomedioproduto((data.get(0).getTotal()-detalhesaida.getTotaldetalhesaida())/data.get(0).getEstoque());
data.get(0).setTotal(data.get(0).getCustomedioproduto()*data.get(0).getEstoque());
}
}
jTextField10.setText(String.valueOf(total));
De uma olhada se dá para clarear alguma coisa? E se pode me ajudar, valeu obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 05:08:21
|
abmpicoli
JavaTeenager
Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline
|
Carinha, pra mim tá cheirando muito forte que o problema está nestas 3 linhas:
Então recomendo que você coloque todas essas chamadas pinheirinho de forma indireta, que assim você consegue inspecionar a variável.
Aliás, recomendo a todos esta prática.
Isto tem algumas vantagens: 1) você não fica chamando o getter todo o tempo e ganha uns pontinhos de performance
2) Você consegue colocar um breakpoint no meio da sentença e validar o conteúdo da variável durante a depuração.
3) Seu código fica mais limpo e legível.
|
.x. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 09:29:22
|
jaboot
Virtual Machine Man
Membro desde: 01/07/2005 14:25:37
Mensagens: 749
Localização: São Paulo
Offline
|
Diego Lino Albares,
Você está recebendo um NaN que vem de algum lugar, e está tentando colocar ele no SQL.
NaN = Not a Number. Dá uma debugada no seu código pra ver onde acontece isso.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2012 18:36:51
|
Diego Lino Albares
Thread.start()
Membro desde: 11/10/2011 22:11:53
Mensagens: 37
Offline
|
abmpicoli valeu cara deu certo do código ai, muito obrigado, valeu a todos pela ateção, sem vocês eu tava no sal valeuuuuuuuuuuuuuuuuuuuuu......................
|
|
|
 |
|
|