如何爲pentaho報表引擎中的子報表提供一個datafactory?如何在pentaho報表引擎中爲子報表提供一個datafactory?
1
A
回答
3
找到您的報表,然後設置在那裏的DataFactory:
對於帶狀子報告:
report.getReportHeader().getSubReport(0).setDataFactory(..);
對於內嵌子報告:
SubReport report = (SubReport) report.getReportHeader().getElement(0); report.setDataFactory(..);
但是,通常你在報告中定義datafactories設計師,然後只是使用它們。或者,您可以在主報告上設置數據系統,並將其繼承到子報告。如果您在報告中需要多種類型的數據,則使用「CompoundDataFactory」。
確保您的報告具有不同的查詢名稱,否則可能會遇到麻煩。
0
如果您在MasterReport上調用setDataFactory(DataFactory)
,應該可以隱式訪問子報表。我以這種方式使用它與類型爲表的數據源和由應用程序預先計算的數據。在這種情況下,Pentaho基本上只用作渲染引擎。
0
我發現Thomas Morgner的建議(上面)是正確的,只有一個警告。他的例子假定SubReport存在於ReportHeader中。
在我的情況下,SubReports深深地嵌套在報告的其他部分,所以我編寫了一些代碼來查找所有SubReports。也許有更好的方法來找到這個,但這是我做的,如果爲我工作。如果有人知道枚舉所有SubReports的更簡單方法,請告訴我!
private Set<CompoundDataFactory> getCompoundDataFactoriesFromMasterAndSubreports() {
Set<CompoundDataFactory> CompoundDataFactories = new HashSet<CompoundDataFactory>();
CompoundDataFactories.add(compoundDataFactory); // Master report
Set<SubReport> subReports = getSubReports();
for (SubReport subReport : subReports) {
if (subReport.getDataFactory() instanceof CompoundDataFactory) {
CompoundDataFactories.add((CompoundDataFactory)subReport.getDataFactory());
}
}
return CompoundDataFactories;
}
private Set<SubReport> getSubReports() {
Set<SubReport> subReports = new HashSet<SubReport>();
recurseToFindAllSubReports(masterReport,subReports);
return subReports;
}
private void recurseToFindAllSubReports(Section section, Set<SubReport> subReports) {
int elementCount = section.getElementCount();
for (int i=0; i<elementCount ; i++) {
Element e = section.getElement(i);
if (e instanceof RootLevelBand) {
SubReport[] subs = ((RootLevelBand)e).getSubReports();
for(SubReport s : subs) {
subReports.add(s);
}
}
if (e instanceof Section) {
recurseToFindAllSubReports((Section)e, subReports);
}
}
}
相關問題
- 1. Pentaho報表引擎 - 如何在Subreport中使用ItemBand
- 2. 在Pentaho報表設計器中使用現有的報表作爲子報表
- 3. pentaho報表設計器中的子報表重疊
- 4. 設計報表引擎
- 5. 報告,子報告pentaho
- 6. 在nodejs中開發報表引擎
- 7. 如何從Pentaho報告中提取XML
- 8. Crystal報表 - 一個子報表與其下的第二個子報表重疊
- 9. 如何在rdlc中處理子報表的子報表?
- 10. 如何正確提供JasperReport中的子報表參數
- 11. Vb6/Crystal報表8.5:如何在一個主報表中使用子報表?如何鏈接數據?
- 12. Pentaho:如何創建複雜的報表
- 13. 如何在(Pentaho報表設計器5.0)中的不同表單中生成多行「INLINE」子報表?
- 14. Pentaho報表輸出步驟
- 15. Java EE中的報表引擎
- 16. 在Crystal報表中使用子報表
- 17. 如何將BIRT報表引擎與最小瓶子集成?
- 18. 子報表中的ActiveReports子報表
- 19. 在sqlserver報表服務的主報表中在子報表上添加一行
- 20. Birt報表引擎命令行(genReport.sh) - 如何在Excel中輸出?
- 21. 水晶報表子報表
- 22. 如何在主報告中添加多個子報表?
- 23. SSRS - 如何在子報表中隱藏父報表的標題?
- 24. 如何在SSRS中使用嵌套子報表生成報表
- 25. Crystal Reports:如何在子報表中顯示主報表頁碼?
- 26. 如何在Crystal報表中抑制按需子報表?
- 27. 如何在Crystal報表中抑制子報表的鑽取2008
- 28. 如何在ireport中傳遞值trow子報表和主報表?
- 29. FixedDocument作爲報告引擎?
- 30. 如何跨多個報告使用子報表或從子報表創建父報表?