Relatório IReport sem consulta ao bd

9 respostas
E

Minha duvida é a seguinte ...
Eu tenho um relatorio onde só passarei dados gerados pela aplicação , não precisarei de consulta
estou fazendo da seguinte maneira :

Chamada do relatorio
GerarRelatorio rel = new GerarRelatorio();
       JasperPrint relat = new JasperPrint();
		relat = rel.gerar();
		JasperViewer.viewReport(relat, false);

Método Gerar

public JasperPrint gerar(){
		JasperPrint rel = null;
		try {

			HashMap map = new HashMap();
            map.put("areaTotal", "Teste");
			String arquivoJasper = "Caminho.jasper";
			rel = JasperFillManager.fillReport(arquivoJasper, map);
		} catch (JRException e) {
			JOptionPane.showMessageDialog(null,e.getMessage());
		}
		return rel;
	}

O problema é que o sistema não exibe nenhuma mensagem de erro porem exibe um popUp dizendo q o documento não contem paginas
, mas o problema é que eu tenho um campo (e na duvida criei um parametro tb ) areaTotal , onde na minha ideia deveria aparecer o valor Teste...
entao como resolvo o meu problema ?

9 Respostas

E

seguinte galera agora eu mudei o método gerar para o seguinte

public JasperPrint gerar() throws ClassNotFoundException, JRException, SQLException{

        JasperPrint rel = null;
        Conexao con = Conexao.getInstanciaConexao();
         Connection conn = con.getConexao();
         Statement stm = conn.createStatement();

        String query = "select * from ce_estado";
		ResultSet rs = stm.executeQuery( query );

		JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
        HashMap map = new HashMap();
        map.put("areaTotal", "Teste");
        String arquivoJasper = "Caminho.jasper";
		rel = JasperFillManager.fillReport(arquivoJasper, map, jrRS);

		return rel;
	}

e no meu parametro areaTotal la do relatorio aparece o valor teste, alguem poderia me explicar o porque não consigo fazer isso sem uma consulta ao banco?

Mero_Aprendiz
Emanoela:
seguinte galera agora eu mudei o método gerar para o seguinte
public JasperPrint gerar() throws ClassNotFoundException, JRException, SQLException{

        JasperPrint rel = null;
        Conexao con = Conexao.getInstanciaConexao();
         Connection conn = con.getConexao();
         Statement stm = conn.createStatement();

        String query = "select * from ce_estado";
		ResultSet rs = stm.executeQuery( query );

		JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
        HashMap map = new HashMap();
        map.put("areaTotal", "Teste");
        String arquivoJasper = "Caminho.jasper";
		rel = JasperFillManager.fillReport(arquivoJasper, map, jrRS);

		return rel;
	}

e no meu parametro areaTotal la do relatorio aparece o valor teste, alguem poderia me explicar o porque não consigo fazer isso sem uma consulta ao banco?

Olá.
Bem para que seja exibido os campo do relatório sem precisar iterar faça assim:
Abra o seu relatório no iReport, vá em Editar, Propriedades do relatório, vá na aba Mais... e na opção Quando sem Informação coloque a opção Todas as sessões, nenhum detalhe.

Isso deve resolver o seu problema.

[]'s
JL

E

Entao … eu fiz o que vc sugiriu só que isso me gerou um outro probleminha … eu tive que colocar os meus dados na aba header pq a aba detail não aparece (mesmo os campos estaticos ) agora o problema é que eu tenho tenho q fazer um grafico … mas nao consigo fazer o grafico direto no header

E

Vou tentar explicar de forma mais clara pra ver se tem outra solução enfim … eu tenho um sistema que faz determinados processamento em uma imagem , entao eu gero um Map com os dados do processamento, como quantidade de pixels de determinada cor, tempo de execucao, resolução da imagem, enfim … ai esse map eu jogo direto pro relatorio e com base na quantidade de pixels de cada cor eu quero montar um grafico de torta com esses valor, ou seja o meu relatorio nao precisa de nenhuma consulta sql… e outra coisa que estou com dificuldade agora é no proprio grafico , em como vou setar os valores pra ele, ja que todos os meus dados vem de um map …
Espero que agora minhas duvidas fiquem mais claras !!!

e vlw pro amigo que respondeu … clareou um pouco minha visao !

E

Emanoela:

alguem poderia me explicar o porque não consigo fazer isso sem uma consulta ao banco?

Na minha opinião isso eh preguiça de quem implementou essa funcionalidade no iReport, pois trata objetos recebidos para exbição de dados e lista de objetos de forma diferente se vc nao for lah nas propriedade do relatorio e mudar o valor na aba ‘Mais’ para todas as seções… ele nunca irá conseguir imprimir as informações desejadas, pq a opção default dele eh ‘Sem Páginas’ do qual espera uma lista de objetos ou uma conexao datasource, do qual poderia mto bem ser implementando para receber os 3 tipos de valores, ou seja, uma coleção, um objeto e um datasource sem precisar alterar as propriedades de páginas para que isso funcione corretamente. tomara q nas futuras versoes quem sabe na versao 4.0(pq na 3.5 o ‘problema eh o mesmo’) eles otimizam essa funcionalidade.

E

Vou tentar explicar de forma mais clara pra ver se tem outra solução enfim … eu tenho um sistema que faz determinados processamento em uma imagem , entao eu gero um Map com os dados do processamento, como quantidade de pixels de determinada cor, tempo de execucao, resolução da imagem, enfim … ai esse map eu jogo direto pro relatorio e com base na quantidade de pixels de cada cor eu quero montar um grafico de torta com esses valor, ou seja o meu relatorio nao precisa de nenhuma consulta sql… e outra coisa que estou com dificuldade agora é no proprio grafico , em como vou setar os valores pra ele, ja que todos os meus dados vem de um map …
Espero que agora minhas duvidas fiquem mais claras !!!

Será entao que gerar relatorio pelo ireport ainda é a minha melhor opção ?
tem como eu gerar esses dados em um arquivo pdf por exemplo sem usar o ireport (descupem se estou falando besteira)
se tiver como gerar o arquivo sem o ireport será que alguem pode me passar um material , ou dar uma ajuda de onde pesquisar enfim … qqr ajuda

E

Veja se isso aqui te ajuda!

E

Na verdade nao me ajudou muito nao … ainda estou com a mesma duvida … de como vou passar os valores pra estes parametros

  • Key Expression: identifica cada fatia. Informar a expressão para que cada fatia represente um determinado valor do campo;
  • Value Expression: informe a expressão para associar o valor desejado.
  • Label Expression: é o rótulo que será exibido para cada fatia.

eu itero uma lista e atribuo ela pra key Expression por exemplo ???

E

Bom gente não vou colocar o tópico como resolvido pois não era bem essa solução que eu queria mas enfim por enquanto eu consegui uma solução que foi usar o JFreeChart e enviar a imagem do grafico para o relatorio quem tiver interesse eu segui este material
http://www.tecgraf.puc-rio.br/~ismael/Cursos/Cidade_FPSW/aulas/Modulo3_Graficos_Relatorios/Java_Relatorios.pdf

Agradeço pela ajuda !!!

Criado 14 de abril de 2009
Ultima resposta 14 de abr. de 2009
Respostas 9
Participantes 3