我正在尝试使用jasper报告制作贴纸。
我正在传递查询以生成jasper报告。 我在jasper报告的'detail field'中设计了上面的结构,所以它不能重复,现在我需要多次生成我的查询结果。
这意味着如果目前我的查询给出了以下结果: -
我希望n次产生相同的结果。
因此,如果我的查询重复同一行n次,那么它将自动生成此结构4次或n次
所以任何人都知道如何在mysql结果查询中重复相同的行,或者任何人都有比此更好的解决方案来完成这项工作。
答案 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条记录)