Valor em moeda

3 respostas
J

Quando uso as minhas variaveis do tipo String, e passo para elas valores monetarios com Virgulas e tudo mais, funciona perfeitamente.
Mas quando tento carregar esses dados novamente formatando diretamente do banco

select cast(valor as numeric) as valor from tabela

//ou

select to_char(valor, '9999D99') as valor from tabela

Apresenta ao invez de ser 10,50 apresenta, 10.50, ou seja, na hora da ediçao desse valor, se grava 10.50 fica somente 10 e perde o decimal.

Mas quando passo pra uma variavel float/Doble, e passo um valor por exemplo: 35,50 acaba dando essa msg:
must be a number consisting of one or more digits.

Alguma dica?

3 Respostas

Natalia_Lima

Mas vc está com problemas para pegar o valor direto no BD ou para pegar do BD e passar para suas variáveis?

Se for a segunda opção, tem como postar o código que está usando para pegar do banco e jogar na sua variável?

drigo.angelo

O melhor mesmo é os tipos dos campos das tabelas e os tipos dos atributos dos seus objetos sejam iguais… 8)

J

Tenho os campos em uma classe chamada “CamposIncentivo”

crio eles assim:

private CamposIncentivo campo = new CamposIncentivo();
private ArrayList<CamposIncentivo> campos = new ArrayList<CamposIncentivo>();

e passo do banco de dados dessa forma:

rs = Conexao.Consulta(Constantes.SQLINCENTIVO
				+ Constantes.SQLPESQUISAINCENTIVOS
				+ Constantes.SQLORDERBYINCENTIVO);
		while (rs.next()) {
			campo = new CamposIncentivo();
			campo.setCodigo(rs.getInt("codigo"));
			campo.setFormato(rs.getString("formato"));
			campo.setLinha(rs.getInt("linha"));
			campo.setMaximo(rs.getString("maximo"));
			campo.setMinimo(rs.getString("minimo"));
			campo.setNome(rs.getString("nome"));
			campo.setProvento_desconto(rs.getString("provento_desconto"));
			campo.setTipo_calculo(rs.getInt("tipo_calculo"));
			campo.setValor(rs.getString("valor"));
			campo.setVigencia(rs.getString("vigencia"));
			campo.setLote(rs.getInt("lote"));
			campos.add(campo);
		}
		grid.setValue(campos);

o detalhe do sql é que já vem formatado, com a formataçao que mandei logo acima.
O campo de valor é um String, so assim aceita valor com virgula, senao se passar float ou double nao aceita.
Estou usando JSF 2

Criado 25 de janeiro de 2011
Ultima resposta 27 de jan. de 2011
Respostas 3
Participantes 3