[RESOLVIDO] Dúvida com uso de Bean no IReport?

7 respostas
Metaleiro

[color=darkblue] No IReport geralmente passo um único Bean : [/color]

ArrayList list = new ArrayList();
list.add(bean);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);

[color=darkblue] Minha dúvida é a seguinte, haveria a possibilidade de se trabalhar com mais de um Beam ? exemplo :[/color]

ArrayList list = new ArrayList();

list.add(bean);
list.add(bean2);
list.add(bean3);
list.add(bean4);

JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);

[color=darkblue] Se alguém piuder ajudar, desde já agradeço ![/color]

7 Respostas

Mero_Aprendiz

Metaleiro:
[color=darkblue] No IReport geralmente passo um único Beam : [/color]

ArrayList list = new ArrayList();
list.add(beam);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);

[color=darkblue] Minha dúvida é a seguinte, haveria a possibilidade de se trabalhar com mais de um Beam ? exemplo :[/color]

ArrayList list = new ArrayList();

list.add(beam);
list.add(beam2);
list.add(beam3);
list.add(beam4);

JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);

[color=darkblue] Se alguém piuder ajudar, desde já agradeço ![/color]

Sim, existe sim.
Para cada item da lista, uma iteração no relatório é gerada.

[]'s
JL

Metaleiro

[color=darkblue]Obrigado antes de mais nada, testei utilizando dois Beans e o que o ocorre é que só é setado no PDF os valores do primeiro bean adicionado na lista, os demais são ignorados.

Caso alguém conheça alguma forma, desde já agradeço !

[/color]

Mero_Aprendiz

Metaleiro:
[color=darkblue]Obrigado antes de mais nada, testei utilizando dois Beans e o que o ocorre é que só é setado no PDF os valores do primeiro bean adicionado na lista, os demais são ignorados.
Caso alguém conheça alguma forma, desde já agradeço !
[/color]

Os campos que devem ser exibidos estão dentro da banda Detail?

[]'s
JL

Metaleiro

[color=darkblue] Sim, todos eles estão dentro do Detail[/color]

Mero_Aprendiz

Hum…
Teria com você postar o código em que você adiciona os itens na lista?

[]'s
JL

Metaleiro

Hum…
Teria com você postar o código em que você adiciona os itens na lista?

[]'s
JL

[color=darkblue]Esse foi o código que criei, a única diferença é que vou passar Beans para ele, estou passando HashMap, mas já estou passando para o sistema onde vou usar da mesma forma, apenas recebendo os beans como parâmetro [/color]

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
     
  /**
   * 
   * @author 
   *
   */
   public class TesteDeImpressao {  
       
     public static void main(String[] args){  
         
       try {  
               
                String report = "C:/report_1_1.jrxml";
                 
                FileInputStream input = new FileInputStream(report); 
                JasperReport jr = JasperCompileManager.compileReport(input);
               	  
                //Criação de Programa
                Map video = new HashMap();  
                video.put("login", "edson");  
                video.put("data_abertura", "carteira");  
                video.put("solicitante", "123");  
                video.put("email_solicitante", "205");  
                video.put("telefone", "237");
                video.put("nome", "edson");
                
                video.put("nome_programa", "carteira");  
                video.put("tipo_de_programa", "123");  
                video.put("regra_expurgo", "205");  
                video.put("podcast", "237");  
                video.put("conteudo_adulto", "edson");  
                video.put("geoblock", "carteira");  
                video.put("canais_de_tv", "123");  
                video.put("nucleo_publicacao", "205");  
                video.put("canais_de_audio", "237");    
                video.put("canais_web", "carteira");  
                video.put("quanto_tempo", "123");  
                video.put("url", "205");  
                video.put("data_de_inicio", "237");
                //video.put("numero_de_videos", "edson");
                //video.put("fila", "205");  
                video.put("equipe", "237");
                
                //Teste
                Map alteracao_programa_1 = new HashMap();  
                alteracao_programa_1.put("numero_de_videos", "edson"); 
                alteracao_programa_1.put("fila", "205");
                
                ArrayList list = new ArrayList();
                list.add(alteracao_programa_1);
                list.add(video);
                
                JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list); 
          
                JasperPrint impressao = JasperFillManager.fillReport(jr, null,  ds);  
                JasperViewer viewer = new JasperViewer(impressao, true);  
                viewer.setVisible(true);  
                JasperExportManager.exportReportToPdfFile(impressao, "C:/video.pdf");
                  
            } catch (Exception exception) {  
                exception.printStackTrace();  
            }  
        }

[color=darkblue]No Sistema por enquanto está assim, mas já vou melhorar o código [/color]

/**
	 * Método responsável por gerar o PDF da página para impressão
	 * 
	 * @param list Recebe uma lista de beans para preenchimento de campoos
	 */
	     public static void createPDF(ArrayList list){
		
		String report = "C:/report_1_1.jrxml";
		
		try {
			
			FileInputStream input = new FileInputStream(report);
			JasperReport jr = JasperCompileManager.compileReport(input);
	        
	        JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list); 
	  
	        JasperPrint impressao = JasperFillManager.fillReport(jr, null,  ds);  
	        JasperViewer viewer = new JasperViewer(impressao, true);  
	        viewer.setVisible(true);  
	        
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
        
		
	}
Metaleiro

[color=darkblue] Resolvi da seguinte forma, fiz a “iteração” dos beans e adicionei em um Map :[/color]

Method[] methods = obj.getClass().getMethods();
            
            for (Method method : methods) {
            	
    				if (method.getName().startsWith("get")) {
    					map.put(method.getName().replaceAll("get", ""), method.invoke(obj) == null ? "" : method.invoke(obj).toString());
    				}
    		
    		}
Criado 25 de junho de 2009
Ultima resposta 29 de jun. de 2009
Respostas 7
Participantes 2