Tenho uma classe de pagamento de Divida, que recebe os clientes, e as dividas cadastradas dos clientes. Em um comboBox escolho o cliente, e altomaticamente em um outro combo box é listado todos os codigos de suas dividas, ate ai corria tudo bem. Quando adicionei um textField para quando eu selecionar o codigo da divida, o valor dessa divida aparecer nele, apresentou a SQLException : Tipos de Dados incompativeis na expressao de criterio. O erro aparece quando executo a classe, e volta a aparecer quando seleciono um novo codigo de divida.
Codigo que lista os codigos de divida:
[code]public void setCodDivida(){
cb_codDividaCliente.removeAllItems();
conDivida.execuçaoSQL("select * from divida where cliente='"+this.cb_cliente.getSelectedItem()+"'");
try {
while (conDivida.resultset.next()) {
cb_codDividaCliente.addItem(conDivida.resultset.getString("codigo"));
}
} catch (SQLException erro) {
JOptionPane.showMessageDialog(null,"Erro");
}[/code]
Codigo que mostra o valor da divida:
[code]public void setDivida(){
conDivida.execuçaoSQL("select * from divida where codigo ='"+this.cb_codDividaCliente.getSelectedItem()+"'");
try{
tf_dividaCliente.setText(conDivida.resultset.getString("valorDivida"));
}
catch(SQLException erro){
JOptionPane.showMessageDialog(null,"Erro");
}
}[/code]
Então kara… o que deve estar acontecendo é o seguinte.
Esse getString do conDivida.resultset.getString(“valorDivida”) deve ser o problema.
Provavelmente o seu campo valorDivida não é no banco do tipo varchar, portanto não poderá ser obtido com um getString.
Verifica o tipo do campo valorDivida, e define o get de acordo com este.
E após isso, você chama um toString para o seu tf_dividaCliente.setText.
Por exemplo, vamos supor que o campo “valorDivida” seja no banco do tipo decimal ou float.
Faça assim:
Float valor = conDivida.resultset.getFloat("valorDivida");
tf_dividaCliente.setText(valor.toString());
Cara tenta modificar assim no recebimento e atribuiççao ao Combo.
Obs: Como trata-se de valores monetários é sempre bom usar o tipo Double, deixando o tipo float mais pra cálculos
extremamente precisos.
//Recebendo o valor
Double valor = conDivida.resultset.getDouble(“valorDivida”);
//Repassando o valor
tf_dividaCliente.setText(String.valueOf(valor));
Cara, vc pode tbm listar isso numa JTable e selecionar diretamente na table o item q vc quer tratar.
Qualquer coisa coloca um post Aqui!
Fiz o que disseram, mas continuou o msm erro. E tambem o primeiro valor é sempre listado, exemplo: A divida cod:1, e o valor da Divida:1000. Percebi que a Exception vem da classe de conexão, na execuçãoSQL.
A messagem de erro vem daqui try Catch:
[code]public void execuçaoSQL( String sql){
boolean result = true;
try{
statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
resultset = statement.executeQuery(sql);
}
catch(SQLException sqlex){
JOptionPane.showMessageDialog(null,"Não foi Possivel "+
"Executar o Comando SQL! "+sqlex);
}
}[/code]
Cara vc ta complicando, vou te passar um trecho pra vc substituir por esse q vc enviou, ai vc me avisa se der certo. BEm simples: não precisa usar o TYPE SCROLL SENSITIVE!
[Code]
public void executeSQL(String sql){
try{
statement = con.createStatement();
resultset = statement.executeQuery(sql);
}
catch(SQLException ex){
JOptionPane.showMessageDialog(null, "Não foi possivel executar o comando "+ex);
}