Mais de um SELECT em relatorios Jaspereport e IReport

12 respostas
furacao123

como faço para inserir mais do que 1 SELECT em meu relatorio feito no IReport?

por exemplo ha campos onde precisaria de outro SELECT separado apenas para listar alguns dados como se fosse uma legenda

12 Respostas

jingle

use subReport e coloque este outro select nele.

furacao123

como eu faço isso em minha classe

public class relCartaoPonto {

	public relCartaoPonto() {
	}

	public void gerar(String mes, String ano) throws JRException , SQLException, ClassNotFoundException {
		//gerando o jasper design
        /*JasperDesign desenho = JRXmlLoader.load( layout ); */

		//compila o relatório
        /*JasperReport relatorio = JasperCompileManager.compileReport( desenho ); */

		//estabelece conexão

		Connection con = MySQL.conectar();
		Statement stm = con.createStatement();

        String query = "SELECT p.data, p.entrada_1, p.saida_1, p.entrada_2, p.saida_2, p.entrada_3, p.saida_3, p.entrada_4, "+
"p.saida_4, f.nome, fu.funcao, e.nome_fantasia, calc.total_trab, calc.total_noturno, cf.total_trab_final, cf.total_trab_not "+
"FROM empresa e, calculo_diario calc, calculo_final cf, anomalia p INNER JOIN (funcionario f INNER JOIN "+
"funcao fu ON f.id_funcao = fu.id) ON f.id = p.id_func "+
                        "WHERE MONTH(p.data) = '"+mes+"' AND YEAR(p.data) = '"+ano+"' AND id_func = p.id_func AND e.id = f.id_empresa AND p.data = calc.data";

        ResultSet rs = stm.executeQuery( query );

		//implementação da interface JRDataSource para DataSource ResultSet
		JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );

		//executa o relatório
		Map parametros = new HashMap();

		JasperPrint impressao = JasperFillManager.fillReport( "C:\\Arquivo.jasper", parametros, jrRS );

		//exibe o resultado
		JasperViewer viewer = new JasperViewer( impressao , false );
        viewer.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
        viewer.show();
	}

como eu adiciono 2 Selects nessa classe…esse eh meu select principal

jingle

eu crio uma outra classe para o subRelatorio… e nela coloco a query do subrelatorio.

furacao123

consegui adicionar um subrelatorio mas estou tendo outro problema ao executar me gera o seguinte erro no iReport

Erro ao preencher impressão ... Subreport overflowed on a band that does not support overflow. net.sf.jasperreports.engine.JRRuntimeException: Subreport overflowed on a band that does not support overflow. at net.sf.jasperreports.engine.fill.JRVerticalFiller.addPage(JRVerticalFiller.java:1203) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageBreak(JRVerticalFiller.java:1294) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBreak(JRVerticalFiller.java:1319) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:674) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportContent(JRVerticalFiller.java:275) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:117) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:879) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:782) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:532) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:63) at net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSubreportRunner.java:209) at java.lang.Thread.run(Unknown Source) Impressão não foi preenchida. Tente utilizar uma Fonte de Dados Vazia ...

furacao123

Resolvido era o tamanho do subrelatorio que estava pequeno e gerou esse erro

agora outra duvida com essa minha classe relCartaoPonto nao consigo add um subrelatorio como faço para para popular e mostrar 2 relatorios juntos?

eu crio outra classe mas como adiciono ela em meu relatorio principal

lusfilip

Entao se eu precisar de um relatório com 3 select, vou precisar de 2 sub report?

o_0

tipo meu cabeçalho precisa de pegar dados de uma sentença e os detalhes são outra sentença…

Logo eu coloco um subreport como cabeçalho ao inves de criar o cabeçalho no meu proprio relatório correto?

Abrass…

TheKill

Nao precisa.

Trabalhe com Collections.
Faça qntos SQL vc precisar. Popule sua Collection.
E envia 1 Collection completa

lusfilip

TheKill:
Nao precisa.

Trabalhe com Collections.
Faça qntos SQL vc precisar. Popule sua Collection.
E envia 1 Collection completa

Não Entendi cara,

Eu estou usando um pluggin do Jasper Reports no Net Beans…

dá pra fazer isso?

TheKill

De uma pesquisa em tutoriais, como usar Collections no iReport…

lusfilip

Vlws man… vou dar uma procurada aqui…

RenataFA

Olá lusfilip

Vc pode passar “os dados” pro seu relatório de várias formas, passar usando Collections como o colega disse, passar a instrução SQL como parece que vc está acostumado a fazer, etc. Eu gosto mais de passar a instrução SQL e deixar o relatório executar, mas tem casos que uso com Collections pq é preciso.

Bom, mas independente de como vc quer passar os dados (seja passar os dados propriamente dito com collections, ou seja por passar uma instrução SQL pro seu relatorio), o que o colega TheKill quis dizer é que vc pode passar todas as informações de uma vez só, e fazer a quebra lá dentro.

Por ex, por sinal vc usa por SQL e vc disse que tem uma sentença e os detalhes dessa sentença. Vamos imaginar então que fosse um pedido de venda e seus itens, pra ficar simples.

Vc pode (usando joins para relacionar a tabela de pedido e a de itens) fazer num único select um retorno assim:

Pedido Cliente Item Valor 1 João 1 10,00 1 João 2 20,00 2 Maria 1 5,00 3 José 1 15,00 3 José 2 3,00

Entendeu? No msm SQL vc tá retornando as informações do Header (no caso o campo pedido e cliente) e do Detalhe (no caso o número do item e o valor). As informações do Header se repetem pra cada item dele.

Então vc vai mandar um único SQL pro iReport, ele vai executar e trazer da forma como eu usei de exemplo.

Ai vc monta seu relatório usando “quebras”, coloca pra quebrar a cada vez que mudar o pedido por ex. E manda imprimir os dados do Header na quebra e o dado dos itens no detalhe.

Era isso que vc tava precisando ou viajei?!

Grata,
Renata

TheKill

Perfeita colocação RenataFA seria exatamente isto…
O resto depende de suas opcões.
Eu fui bem resumido sobre oque fazer, mostrei o caminho.

Prefiro mostrar o caminho, e a resposta vai aparecer…

Criado 23 de março de 2009
Ultima resposta 25 de jun. de 2010
Respostas 12
Participantes 5