Quando vc faz notasf.get(tabela.getSelectedRow()) isso retorna um objeto certo? Esse objeto tem código, nome, etc. Ou seja, o nome e o código se referem ao mesmo objeto. Não é qualquer nome. É o nome referente àquele código.
Tenta fazer da maneira que lhe falei apenas adaptando os nomes e se não der certo, cole o erro para nós verificarmos.
Quando vc faz notasf.get(tabela.getSelectedRow()) isso retorna um objeto certo? Esse objeto tem código, nome, etc. Ou seja, o nome e o código se referem ao mesmo objeto. Não é qualquer nome. É o nome referente àquele código.
Tenta fazer da maneira que lhe falei apenas adaptando os nomes e se não der certo, cole o erro para nós verificarmos.[/quote]
Me expressei mal, esqueci de dizer uma coisa
realmente desse jeito da certo, mas em notasf eu não tenho NomeContrato, somente o CodContrato.
o NomeContrato eu só tenho em lista de contratos, mas ai caso eu fizer em contratos ele me retorna NullPointerException (claro, ele vai retornar nulo pq nao nada mesmo, pois estao tudo em notasf)
Show de bola. Criei o DAO e fiz um while e deu certo.
Aproveitando o tópico, vc sabe como eu resolvo este problema? No codigo abaixo eu tenho um cbIDContrato que era um ComboBox e nele vem um objeto.
Agora no lugar deste ComboBox é um jTextField que recebe o código.
Como eu faço pra ele aceitar isso? seja recebendo objeto ou string…
public void mostraValorContrato() throws SQLException
{
Contrato contrato = new Contrato();
ContratoDao dao = new ContratoDao();
contrato = (Contrato) cbIDContrato.getSelectedItem();
dao.valorContrato(contrato.getCodContrato());
lblValorContrato.setText(dao.valorContrato);
}
Se isso agora é um JTextField, vc pode criar um DAO que recebe o número do contrato e retorna o objeto contrato. Então seu código ficaria mais ou menos da seguinte maneira:
public void mostraValorContrato() throws SQLException
{
Contrato contrato = new Contrato();
ContratoDao dao = new ContratoDao();
contrato = dao.retornaObjContrato(Integer.parseInt(jtNumeroContrato.getText()));
lblValorContrato.setText(dao.valorContrato(contrato.getCodContrato()));
}
Isso serve considerando que a sua tabela no banco de dados tem uma chave primária normal, mas se ela for composta, vc precisará de todos os campos que compõem a chave composta.
Esqueci de dizer uma coisa: se você for criar esse outro DAO poderá inutilizar o DAO que retorna o nome do contrato, pois se você tem o objeto Contrato terá todas as suas informações (inclusive o nome).
Sinceramente, eu não entendi nada do que vc estáa fazendo. Talvez vc poderia postar uma figura e mostrar mais partes do seu código. Apenas adiantando, seria mais interessante vc criar um objeto com todas as características que lhe interessam. Feito isso, crie um DAO que receba o código do contrato, preencha o objeto criado e retorne-o. Se for vários registros, você terá que retornar um list de objetos.
Eu notei algumas coisas que você poderia melhorar no seu código, estou escrevendo cometários para você entender melhor
public String valorContrato;
public String valorContrato(Integer codContrato) throws SQLException
{
String sql = "select c.cod_contrato,c.valor_contrato, valor_contrato "+ //pq duas vezes o valor do contrato??
"from contrato c inner join nf n on c.cod_contrato = n.cod_contrato "+
"where c.cod_contrato=? group by c.cod_contrato,c.valor_contrato";
PreparedStatement stmt = this.conexao.prepareStatement(sql);
stmt.setInt(1, codContrato);
ResultSet rs = stmt.executeQuery();
/* ResultSet vc usa quando a sua consulta retorna vários registros (uma tabela por exemplo). Quando vc utiliza o método rs.next() vc está passando o cursor para a próxima linha da sua tabela. Por isso vc coloca ele em um while. Se vc vai retornar um único valor, não faz sentido percorrer várias linhas do seu select. Se você quer retornar o resultado inteiro do select aí sim faz sentido vc utilizar o Resultet e o while com rs.next(), mas dentro do while vc deve adicionar o objeto dentro de um List<Contrato> e retornar esse list.
*/
while (rs.next())
{
valorContrato = rs.getString("valor_contrato");
//System.out.println("Valor contrato: "+valorContrato);
}
rs.close();
stmt.close();
return valorContrato;
}