0
我有代碼的JasperReport:從查詢檢索第二個結果與參數的JasperReport
int id = 1;
String sql = "SELECT * FROM invoices where id = '"+ id + "'";
InputStream source = getClass().getClassLoader().getResourceAsStream("tre/"+ reportName + ".jrxml");
JasperDesign jd = JRXmlLoader.load(source);
JRDesignQuery newQuery = new JRDesignQuery();
newQuery.setText(sql);
jd.setQuery(newQuery);
JasperReport jr = JasperCompileManager.compileReport(jd);
JasperPrint jp = JasperFillManager.fillReport(jr, null, ConnectionToDb.connectDb());
JasperViewer.viewReport(jp);
到目前爲止好。這使我在報告中顯示當前發票的行數。現在我怎麼可以在JasperReport中添加Fields,它將包含來自兩個公司的再次使用SQL的發票的詳細信息,並且查詢來自方法中的java代碼? 比方說,這個查詢:
String company = textField.getText();
String sql = "SELECT * FROM companies where name = '"+ company + "'";
這裏是JasperReport的部分:
<queryString>
<![CDATA[select * from invoices]]>
</queryString>
<field name="Name" class="java.lang.Object"/>
<field name="Type" class="java.lang.Object"/>
<field name="Quantity" class="java.lang.Object"/>
<field name="Price" class="java.lang.Object"/>
<field name="Info" class="java.lang.Object"/>
附: 參數與模式:本報告中的查詢我與newQuery.setText(sql);
的[如何添加特設數據庫內容到文本字段(HTTP://計算器.com/q/36019481/876298)的帖子可以幫助你 –
很好的例子,但還是不明白,這怎麼與java交流?我正在使用JavaSwing。當我從JFrame中獲得一些值時,這個值將成爲查詢報表中的參數: '!![CDATA [SELECT ID,ADDRESSID,TOTAL FROM DOCUMENT WHERE ADDRESSID = $ P {value} ORDER BY ADDRESSID]]> ' – Rumen
您可以通過參數映射將參數傳遞給報告。你正在傳遞* null *而不是* Map * –