在 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}