如何多次生成同一行?

时间:2016-06-13 12:48:46

标签: mysql jasper-reports

我正在尝试使用jasper报告制作贴纸。

下图显示了结构。 enter image description here

我正在传递查询以生成jasper报告。 我在jasper报告的'detail field'中设计了上面的结构,所以它不能重复,现在我需要多次生成我的查询结果。

这意味着如果目前我的查询给出了以下结果: -

enter image description here

我希望n次产生相同的结果。

因此,如果我的查询重复同一行n次,那么它将自动生成此结构4次或n次

所以任何人都知道如何在mysql结果查询中重复相同的行,或者任何人都有比此更好的解决方案来完成这项工作。

我的预期结果如下 enter image description here

1 个答案:

答案 0 :(得分:3)

使用union

修改查询是一个解决方案示例
SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10); 

但我会给你一个纯粹的jasper-reports解决方案,定义一个参数,指示你的打印应该重复多少次

  

纯粹的jasper报告解决方案是使用子报告,传递一个   JREmptyDatasource(nrOfPrints)和字段作为参数。子报告将重复详细信息带与nrOfPrints一样多的时间,您可以在其中输出参数(主报告字段)。

实施例

主要报告

定义重复次数为RepeatNumber的参数也会看到我如何将字段作为参数传递给子报表,您需要传递所有字段。

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RepatDataSource" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ceca1b98-d43c-4ee0-8339-661aa2ea53a9">
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["C:\\jdd\\projects\\StackTrace\\jasper\\"]]></defaultValueExpression>
    </parameter>
    <parameter name="RepeatNumber" class="java.lang.Integer">
        <defaultValueExpression><![CDATA[3]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[Your query]]>
    </queryString>
    <field name="field1" class="java.lang.String">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <detail>
        <band height="100" splitType="Stretch">
            <subreport>
                <reportElement x="0" y="0" width="555" height="100" uuid="9d56da00-c1c9-4b2b-94e2-4019e4f58c8f"/>
                <subreportParameter name="NR_REPEAT">
                    <subreportParameterExpression><![CDATA[$P{RepeatNumber}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="field1">
                    <subreportParameterExpression><![CDATA[$F{field1}]]></subreportParameterExpression>
                </subreportParameter>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource($P{RepeatNumber}.intValue())]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "RepatDataSource_subreport.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
</jasperReport>

<强>子报表

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RepatDataSource_subreport" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="98ddead4-e116-4c91-9ecb-416c10c3065c">
    <parameter name="NR_REPEAT" class="java.lang.Integer"/>
    <parameter name="field1" class="java.lang.String" isForPrompting="false"/>
    <detail>
        <band height="108" splitType="Stretch">
            <textField>
                <reportElement x="328" y="1" width="100" height="20" uuid="c5642fd7-9f63-4aa5-8503-16b1388c156b"/>
                <textElement verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$V{REPORT_COUNT} + "/" +$P{NR_REPEAT}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="45" y="35" width="125" height="20" uuid="5c2bb49a-ba95-4cb7-8c46-c32a0769e5e9"/>
                <textElement verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$P{field1}]]></textFieldExpression>
            </textField>
            <line>
                <reportElement x="0" y="0" width="555" height="1" uuid="dd3e7e6c-979e-421b-9f71-479e64c8023b"/>
            </line>
            <staticText>
                <reportElement x="0" y="35" width="45" height="20" uuid="0443e2f4-25bd-4837-9c95-bca2b26b3996"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Name]]></text>
            </staticText>
            <staticText>
                <reportElement x="214" y="1" width="114" height="20" uuid="0e20ec29-0092-41a3-b977-f8f64ff842ea"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Print Educational Books]]></text>
            </staticText>
        </band>
    </detail>
</jasperReport>

输出(我的数据库中有1条记录)

Result