Dados para o Ireport

9 respostas
E

e ai pessoal…

to com um probleminha com uma geração de um relatório no IReport.

segue minha classe:

import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
//import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
//import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

public class Imprime implements ActionListener
{
	private RegProtocolosInterno dados;
	private JDesktopPane desktop;
	
	public Imprime(RegProtocolosInterno dados, JDesktopPane desktop)
	{
		this.dados = dados;
	}
	
	public void actionPerformed(ActionEvent ev)
	{
		
		Hashtable map = new Hashtable();
		
		map.put("NUMERO", dados.num.getText());
				
		for(int l = 0; l &lt dados.registros.getRowCount(); l++)
		{
			
			map.put("DATA_OPER", ""+l);
			
		}
		
		try
		{
			JREmptyDataSource jrDataSoursePrincipal = new JREmptyDataSource();
			
			JasperPrint relatorio = JasperFillManager.fillReport("./Relatórios/Protocolo2.jasper", map, jrDataSoursePrincipal);
			
			JasperViewer.viewReport(relatorio, false);
		
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
	}

}

gostaria de enviar para o jasper os dados contidos na tabela "registros" da classe RegProtocolosInterno, ou seja, que ele gerasse campos conforme a quantidade de linhas contidas na tabela.

como vcs podem observar eu tentei

for(int l = 0; l &lt dados.registros.getRowCount(); l++)
		{
			
			map.put("DATA_OPER", ""+l);
			
		}

e não deu certo, pq ele soh envia a última linha da tabela.

Não sei se ficou bem clara o meu problema mas se tiver como e alguém souber como fazer e puder me ajudar ficarei mto agradecido.

desde já agradeço a atenção de todos.

flws

9 Respostas

furutani

Eu não compreendi direito o que voce quer fazer.
Mas se vc quer cria fields dinamicos complica um pouco.

E

bom, eu não sei se seria exatamente criar fields dinâmicos…

seria como se fosse eu criar um sub-report e ao envés dele me gerar um relatório a partir de uma consulta no banco, seus field fossem preenchidos com os valores que eu tenho na minha JTable…

seria algo desse tipo. alguma idéia?

tentei um exemplo q encontrei sobre arraylist mas não deu certo…geram vários erros.

flws

furutani

ah ta dá uma olhada aqui

E

amigo…eu já tinha visto esse tutorial antes mas não consegui entender como ele funciona… :?

tentei compilar mas acusa um alguns erros.

constinuo sem saber o q fazer… :cry:

E

tentei fazer o seguinte:

import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

public class Imprime implements ActionListener
{
	private RegProtocolosInterno dados;
	private JDesktopPane desktop;
	
	public Imprime(RegProtocolosInterno dados, JDesktopPane desktop)
	{
		this.dados = dados;
	}
	
	public void actionPerformed(ActionEvent ev)
	{
		ArrayList list = new ArrayList();
		
		list.add("blabal");		
		list.add("knlfn");
		list.add("jshisdhoh");
		
		JRBeanCollectionDataSource BCD = new JRBeanCollectionDataSource(list);
		
		Hashtable map = new Hashtable();
		
		map.put("NUMERO", dados.num.getText());
		
		map.put("deps", BCD);
		
		try
		{
			JREmptyDataSource jrDataSoursePrincipal = new JREmptyDataSource();
			
			JasperPrint relatorio = JasperFillManager.fillReport("./Relatórios/Protocolo2.jasper", map, jrDataSoursePrincipal);
			
			JasperViewer.viewReport(relatorio, false);
		
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
	}

}

tentei esse teste simples e adivinha…PAU!!!

furutani

Se voce falar qual os erros exibidos, dava para ser mais preciso na minha resposta.

E

desculpe…

os campos do sub-report aparecem nulos…pelo que eu entendiele não está passando os dados da classe para o report

E

???

farzac

Ola Pessoal, eu antes nao conseguia gerar relatorio por causa de alguns erros, mas gracas as dicas do furutani e outros colegas do forum consegui resolver os erros, porem agora nao consigo abrir o report, quando tento abrir o ireport da o seguinte erro:

Exception in thread main java.lang.NoSuchMethodError

at it.businesslogic.ireport.gui.SplashDialog.initComponents(SplashDialog

.java:43)

at it.businesslogic.ireport.gui.SplashDialog.(SplashDialog.java:18

)

at it.businesslogic.ireport.gui.MainFrame.main(MainFrame.java:6642)

Sera que alguem sabe porque este erro esta ocorrendo, ja formatei a maquina e assim que acabei de formatar a maquina testei abrir o ireport e abriu, mas depois que criei a classe que iria chamar o ireport e adicionei os .jar que o netbeans acusava nao ter comecou a dar este erro.
Entao eu deletei todos os .jar, mas mesmo assim o erro continua.

Espero que alguem possa me ajudar…

Obrigado desde ja…

Criado 26 de fevereiro de 2007
Ultima resposta 4 de mar. de 2007
Respostas 9
Participantes 3