[ Resolvido ] JFrame utilizando dois resultset simultaneamente

Caros colegas, estou desenvolvendo um pequeno aplicativo que permite controlar as tarefas distribuídas no escritório e ao fim saber quais usuários não terminaram, terminaram atrasados ou que terminaram dentro do prazo previsto para tal. Ainda,quem delegou a tarefa e quem foi designado a cumprí-la.

Como banco de dados estou utilizando o firebird 2.5.

O projeto está sendo desenvolvido seguindo o padrão MVC.

Funcionamento: tabelas funcionário, tarefa e funcionário_tarefa. Nesta última tabela guardo apenas as chaves primárias das duas tabelas anteriores (funcionário e tarefa).

No momento em que vou atribuir uma tarefa a um usuário estou usando o jdialog que exibe as informações das respectivas tabelas.

Então quando seleciono o nome desejado esta janela se “fecha” e o campo destinado ao funcionário recebe o código do funcionário selecionado. Dessa forma quando clico no botões de navegação consigo navegar por todos os registros sem nenhum problema. Mas, o problema é que só exibe o código do funcionário. Então coloquei um jtextfield na frente do campo que recebe o código. Vocês já devem visto diversos programas com essa forma de busca que estou citando.

Criei um método em outra camada que recebe um código, e pesquisa no banco se ele existe, caso sim retorna tal nome. Este nome deve ser setado no jtextfield.

O problema é quando habilito este método a navegação pára de funcionar, aparece uma mensagem de que o resultset foi finalizado.

Não estou conseguindo entender o porque desse erro. Vejam que utilizo no momento da navegação as camadas funcionarioDAO e funcionario_tarefaDAO…estou achando que deve ser relacionado a isso.

A primeira consulta usa o resultset1, na mesma hora é chamado um método que usa o resultset2…aí quando clico para navegar em qualquer direção dá erro de nullpointer…

Agradeço desde já a alguém que possa me passar algumas dicas.

Pessoal, analisando melhor aparenta ser o seguinte: como disse estou utilizando 2 resultset, e o primeiro aparenta estar sendo fechado para fazer a segunda consulta (resultset2)… aí quando vou navegar mais uma vez entre os registros, de onde estas informações vem do primeiro resultset aparecem as mensagens de nullpointerexception ou que o reusltset está fechado.

Caso seja isso mesmo podem me dizer como resolver?

Outro detalhe, talvez seja relevante, estou usando também o padrão singleton.

Cara, se entendi bem, você está fazendo uma consulta na sua tabela N-N e por isso recebe só o código. Correto?

Se for isso você pode já logo na consulta buscar também o nome do funcionario na tabela correta sem precisar ter que abrir um ResultSet dentre de um ResultSet. pois realmente, pensando de forma lógica, isso não deveria funcionar mesmo.

Então segue um exemplo de como você pode fazer sua consulta (claro que você deve adequar os nomes de seus campos corretos na query.):

select func.codigo, func.nome 
  from funcionario_tarefa funcTar
          join funcionario func 
                     on func.codigo = funcTar.codigo
          join tarefa tar
                     on tar.codigo = funcTar.codigo
 where  tar.codigo = 123456 -- Aqui entra seu código de tarefa. 

Bom dia adirano_si!

Valeu pela dica cara, impressionante não estava conseguindo enxergar uma solução relativamente simples como a proposta por você.

O que parecia complexo demais para ser resolvido com sua dica consegui resolver simplesmente criando uma view no banco de dados, fazendo join em todas as tabelas que preciso e preencho meu resultset de navegação com os dados desta view.