2010-04-02 92 views
1

我試圖啓動一個報表,我在iReport中創建了一個包含主報表和子報表的報表。在iReport中,子報表啓動正常,幷包含數據,但是當我嘗試從我的Java代碼中啓動它時,子報表爲空。Jasper Reports中的空白子報表

什麼我迄今所做的:

  • 我有叫用來定義路徑報表「報表」主報表中的字符串參數。例如。值: 「E:\ java的\ ReportLauncher \ \報告test_subreport1.jasper」

  • 在主報告中的報表表達式設置爲:$ P {}報表

  • 子報表連接表達式爲:$ P {REPORT_CONNECTION}

  • 我還有一個名爲「INVOICE_NUMBER」的子報表參數,它被設置爲$ F {InviInvNo},它映射到主報表中的一個字段。

在我的Java代碼,我有:

HashMap<String, Object> paramHash = new HashMap(); 
paramHash.put("INVOICE_NUMBER", invoiceID); 
paramHash.put("REPORT_CONNECTION", this.conn); 
paramHash.put("SUBREPORT", subReportPath); 

JasperPrint jasperprint = JasperFillManager.fillReport(this.reportPath, paramHash, this.conn); 

主要的報表創建罰款和被填充。子報表區域是空白的。任何想法,我做錯了什麼?

在此先感謝, Andy。

回答

1

既然你沒有提到的報表查詢什麼:

如果您使用的是詳細樂隊子報表,那麼您將需要一個數據查詢報表。

在舊的iReport中,從Data菜單選擇Report Query並在此處編寫您的查詢。如果您只想要一條記錄(即,只有一個細節帶),您可以使用一個虛擬表。像:

SELECT 'a' FROM DUMMY 

否則,如果你不想使用詳細信息區域,您可以查看其他樂隊不使用查詢的選項。從Edit菜單中選擇Report Properties,在More...標籤下,設置標誌When no dataAll Sections, no detail