Mais de um SELECT em relatorios Jaspereport e IReport

12 respostas
F

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

J

use subReport e coloque este outro select nele.

F

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

J

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

F

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 ...

F

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

L

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…

T

Nao precisa.

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

L

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?

T

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

L

Vlws man… vou dar uma procurada aqui…

R

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

T

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