Listas, Banco de dados, dificuldades (bobas?) =/

Bom dia gente.
Estou fazendo um relatório que precisa mostrar todos os funcionarios de um departamento, independente se ele tenha dados para mostrar no mesmo. Vou colar o código e dizer minhas dúvidas.

public String imprimirSaldoHoras() throws JRException{
List lista = horaExtraLogic.getImprimirSaldoHoras(funcionarioLogado.getCentrodeCusto().getId().toString().substring(0, 3));
for(int i = 0; i < lista.size(); i++){
for (Funcionario func : funcionariosDoDpto) {
if (funcionariosDoDpto.get(i).getMatricula().toString().equalsIgnoreCase(lista.get(i).getRegistroFuncionario().toString())) {

				funcionariosDoDpto.get(i).setNome(list.getNomeFuncionario());	
				lista.get(i).setDepartamentoSigla(func.getCentrodeCusto().getSigla().trim ());
				lista.get(i).setDepartamentoNome(func.getCentrodeCusto().getNome().trim())				
			}
		}
	}
return geraPdf.executa("Relatorio_rh_horasExtras_saldoHoras.jasper", lista);		
}

}

Desse jeito, ele mostra só os funcionários que tem informações no banco(puis o código desse jeito para ficar mais fácil a visualização, não q eu acha q devia funcionar o q estou querendo desse jeito). Os funcionarios estão na lista funcionariosDoDpto. Essa “lista” do é dos funcionários que tem informações no banco. Não sei se dei as informações suficientes para alguém poder me ajudar, mas qualquer dica é bem vinda, pois estou quebrando a cabeça e perdendo mto tempo. Sim, sou leigo no assunto, então, se for algo estúpido, foi mal.
Agradeço desde já.
Daniel

Desculpe mais tu está usando que ferramenta para gerar esse relatório?

iReport

Olá Daniel-Silva, beleza?

Desculpe, mas não compreendi muito bem sua dúvida.

Acho que dá para esclarecer se você responder essas duas perguntas: o que acontece atualmente? e o que você pretende fazer?

Um abraço!

opa, beleza e ae??
O que acontece é que no relatório, do jeito que está no código, ele mostra só os funcionários que tem na lista lista. E nessa lista, só aparece os funcionários que fizeram hora extra, ou seja, os que tem informações no banco de dados. O que eu quero é que apareça todos os funcionarios do departamento, independente disso, ou seja, os que estão no funcionariosDoDpto mais os da lista. Como eu disse, eu já tentei várias coisas, mas puis desse jeito para melhor visualização.

Bom, eu não sei se respondi o suficiente, espero que consiga compreender.
Abraço
=]

Daniel, sempre que for postar códigos aqui no fórum, coloque-o entre as tags code. Senão fica difícil de ler.

 Seu código aqui

Tente editar o seu primeiro post e colocar as tags.

Tudo beleza também!

Daniel-Silva, a impressão que dá é que o if dentro do for é que está filtrando os funcionários que estão sendo exibidos na sua lista. Já tentou comentá-lo? Conforme exemplo abaixo.

PS: Posso estar falando besteira, mas é que é difícil tirar conclusões sem o código-fonte das classes Funcionario e horaExtraLogic estarem disponíveis.

[code]public String imprimirSaldoHoras() throws JRException{
List lista = horaExtraLogic.getImprimirSaldoHoras(funcionarioLogado.getCentrodeCusto().getId().toString().substring(0, 3));
for(int i = 0; i < lista.size(); i++){
for (Funcionario func : funcionariosDoDpto) {
//if (funcionariosDoDpto.get(i).getMatricula().toString().equalsIgnoreCase(lista.get(i).getRegistroFuncionario().toString())) {

funcionariosDoDpto.get(i).setNome(list.getNomeFuncionario());
lista.get(i).setDepartamentoSigla(func.getCentrodeCusto().getSigla().trim ());
lista.get(i).setDepartamentoNome(func.getCentrodeCusto().getNome().trim())
//}
}
}
return geraPdf.executa(“Relatorio_rh_horasExtras_saldoHoras.jasper”, lista);
}
} [/code]

Tiago não é mais fácil vc usar o próprio editor do ireport para fazer seus relatórios? ele praticamente gera o sql para vc sozinho.


	public String imprimirSaldoHoras() throws JRException{		
		List<HoraExtra> lista = horaExtraLogic.getImprimirSaldoHoras(funcionarioLogado.getCentrodeCusto().getId().toString().substring(0, 3));
		
		
		for(int i = 0; i < lista.size(); i++){			
			for (Funcionario func : funcionariosDoDpto) {
			
					
		if (funcionariosDoDpto.get(i).getMatricula().toString().equalsIgnoreCase(lista.get(i).getRegistroFuncionario().toString())) {							
					
					lista.get(i).setNomeFuncionario(func.getNome());
					lista.get(i).setDepartamentoSigla(func.getCentrodeCusto().getSigla().trim ());
					lista.get(i).setDepartamentoNome(func.getCentrodeCusto().getNome().trim());			
			
			}
		}
	return geraPdf.executa("Relatorio_rh_horasExtras_saldoHoras.jasper", lista);		
	}
}

Obrigado gente. Tiago, eu já havia tentado isso sim, e eu nem puis as outras classes pq elas estão bem basicas. Vo por o logic.

@SuppressWarnings("unchecked")
			public List<HoraExtra> getImprimirSaldoHoras(String departamento) {				
				Query q = em.createQuery("select c from HoraExtra c where (c.situacaoHe.id != '3' or c.situacaoHe.id != '8') and c.departamento = '" + departamento + "' Order by c.registroFuncionario" );					
				return q.getResultList();		
			}	

Pior que eu já tentei tanta coisa, e to atrasando muito com isso. Mas enfim, continuarei tentando aqui, quem quiser continuar dando algum conselho, eu agradeço. Valeu a todos que já responderam. Abraço =]

http://codigofonte.uol.com.br/artigo/java/gerando-relatorios-com-ireport-e-java