在 JasperReport 中使用参数从查询中检索第二个结果
Retrieve second result from query with parameter in 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 中添加字段,它将再次使用 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"/>
P.S。我用 newQuery.setText(sql);
覆盖了报告中的查询
Map<String, Object> param = new HashMap<String, Object>();
......
JasperPrint jp = JasperFillManager.fillReport(jr, param, ConnectionToDb.connectDb());
然后在 JasperReport 中:
带模式的参数:$P{nameCompany}
我有 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 中添加字段,它将再次使用 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"/>
P.S。我用 newQuery.setText(sql);
Map<String, Object> param = new HashMap<String, Object>();
......
JasperPrint jp = JasperFillManager.fillReport(jr, param, ConnectionToDb.connectDb());
然后在 JasperReport 中:
带模式的参数:$P{nameCompany}