Relatório no Ireport, é possivel essa lógica?

5 respostas
NOM

Olá a todos, estou faezndo um relatório no braço, tentei durante uns dois dias no ireport e não consegui, queria saber se é possivel fazer no Ireport esse relatório.

Lógica do relatorio: são 3 select na mesma tabela, um busca as datas, do resutado ele faz os outros 2, contando o total das ocorrencias do dia e a outra com o valor 1, segue a logica do relatorio no braço que estou fazendo:

String sql_data = "Select data from pesquisa group by data";
	            	  Statement stm = conn.createStatement();
	                    ResultSet  rs_data = stm.executeQuery(sql_data);
	                      while (rs_data.next()) {  
	                                    String data = rs_data.getString("data");
	                                    System.out.println(data);
	                                    String sql_resultado = "Select count(resultado) as linha from pesquisa where data='"+data+"'";
	  	            	    Statement stm_resultado = conn.createStatement();
	  	            	    ResultSet  rs_resultado = stm_resultado.executeQuery(sql_resultado);
	  	            	    while (rs_resultado.next()) { 
	  	            	    	 resultado_total = rs_resultado.getInt("linha"); 
	  	            	    	//resultado_total = resultado_total++;
	  	            	    	
	  	         }
	  	        
	  	            	  
	  	            	  String sql_resultado1 = "Select count(resultado) as linha1 from pesquisa where resultado = 1 and data='"+data+"'";
	  	            	    Statement stm_resultado1 = conn.createStatement();
	  	            	    ResultSet  rs_resultado1 = stm_resultado1.executeQuery(sql_resultado1);
	  	            	    while (rs_resultado1.next()) { 
	  	            	    	 resultado_total1 = rs_resultado1.getInt("linha1"); 
	  	            	    	//resultado_total1 = resultado_total1++;
	  	            	    	 
	  	            	    }
	  	            	    
	  	            	   int  percentagem1 = (100 * resultado_total1)/resultado_total; 
	  	            	   int  percentagem0 = (100 - percentagem1) ;
	  	            	   System.out.println("Cara:"+percentagem1+"%   Coroa:"+percentagem0+"%");

5 Respostas

rdmardegam

Pq vc n faz toda a logica de pesquisar as informacoes que vc necessita e depois você passa essas informacoes para o relatorio. Deixando o relatorio com a finalidade de apenas exibir as informacoes e nao com a resposabilidade de efetetuar a pesquisa e montar o relatorio.

rmendes08

Cara, faz tudo em um único select, e você coloca esse select no relatório, bem mais fácil e rápido. Do jeito que você está fazendo o relatório vai ficar uma carroça:

SELECT data, COUNT(resultado) AS TOTAL_RESULTADO
FROM pesquisa
WHERE resultado = 1
GROUP BY data

E aí é só compilar e executar o relatório.

NOM

Então é possivel importar a logica de uma classe em Ireport? blz então, vou pesquisar isso!!
valew

rdmardegam

Sim, vc pode fazer a logica e mandar tudo oq vc precisa para o relatorio atraves do java.

Pode enviar, colecao, atributos, tudo que voce quiser.

Boa sorte.

C

Então as duas opiniões acima são muito boas, tenta fazer tudo em uma unica consulta assim você irá ganhar em performance, e sempre é bom o separar a lógica de negócio da visualização final.

Faça a lógica nas classes, depois passa o resultado para o relatório assim fica bem melhor de trabalhar com o ireport.

falou.

Criado 15 de junho de 2010
Ultima resposta 15 de jun. de 2010
Respostas 5
Participantes 4