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
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
use subReport e coloque este outro select nele.
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
eu crio uma outra classe para o subRelatorio… e nela coloco a query do subrelatorio.
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 ...
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
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…
Nao precisa.
Trabalhe com Collections.
Faça qntos SQL vc precisar. Popule sua Collection.
E envia 1 Collection completa
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?
De uma pesquisa em tutoriais, como usar Collections no iReport…
Vlws man… vou dar uma procurada aqui…
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
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…