Bom dia.
Li diversos posts sobre como chamar um sub-relatório do iReport em uma classe java, mas nenhum conseguiu me ajudar.
O meu sub-relatório está na mesma pasta que o relatório pai, só que não posso definir todo o caminho fixo, pois o relatório será usado em 2 servidores diferentes.
Teria como eu chamar somente pela pasta onde está o relatório?
Como por exempo, a minha pasta final é a pasta "apps".
URL path = getClass().getResource("FRK_RelExpedicoes.jasper");
JasperPrint jasperPrint = JasperFillManager.fillReport(path.openStream(), parametros, DB.getConnectionRO());
JasperViewer.viewReport(jasperPrint, "Relatório de Expedições");
}
catch (Exception ex)
{
Log.warn("Falha ao imprimir relatório de Expedições.");
}[/code]
E se eu passar o caminho do SUBREPORT_DIR por parâmetro, no ireport deixo em branco?
Se eu tiro o subreport do meu relatório, ele abre normal… se eu deixo, ele nem abre
Se alguém puder me ajudar obrigada.
E no ireport no componente do seu subrelatorio você configura:
Subreport expression: $P{seu parametro}
Expression class: java.io.InputStream
Using cache: marcar
Sem contar a opção de connection type e data source expression de acordo com seu data source.
[quote=fasts]Eu tive um problema sério pra conseguir fazer um sub-relatório funcionar em outros computadores, mas consegui assim:
No meu caso seria
URL web = getClass().getResource("../apps/FRK_RelExpedicoes_Sub.jasper");
parametros.put("SUBREPORT_DIR", web.toString());
porque uso linux…
mas e no campo “Default Value Expression” do SUBREPORT_DIR no iReport, coloco o que?
porque ali vai só o caminho e no campo “Subreport Expression” do subreport, vai o SUBREPORT_DIR+o nome do relatório… coloco o que?
No campo “Default Value Expression” do SUBREPORT_DIR no iReport deixei em branco e no código deixei só a pasta dai no campo “Subreport Expression” do subreport deixei como estava.
URL web = getClass().getResource("../apps/");
parametros.put("SUBREPORT_DIR", web.toString());