Anu*_*tel 10 jasper-reports ireport
大家好,我正在使用iReports生成其中一个报告并停留在一个地方.
情况是这样的:
我在主报表中使用了一个子报表,并且我希望在执行查询后将变量(浮点数)从子报表返回到主报表.而我只是将空值返回主报告我已经浪费了2天谷歌搜索和搜索但问题仍然存在..
下面是我的JRXMLS的虚拟代码(完全相同)和快照...
主要报告JRXML
<?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="anuj" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["/home/anuj/Reports/"]]></defaultValueExpression>
</parameter>
<queryString language="SQL">
<![CDATA[select * from "SensorType"]]>
</queryString>
<field name="SensorTypeId" class="java.lang.Integer"/>
<field name="SensorTypeName" class="java.lang.String"/>
<variable name="A" class="java.lang.Integer" resetType="None" calculation="System"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band height="23" splitType="Stretch">
<textField>
<reportElement x="71" y="3" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{SensorTypeId}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="202" y="3" width="112" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{SensorTypeName}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="5" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="1" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch">
<subreport>
<reportElement x="183" y="16" width="257" height="26"/>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<returnValue subreportVariable="A" toVariable="A"/>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "anuj_subreport1.jasper"]]></subreportExpression>
</subreport>
<textField>
<reportElement x="71" y="22" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$V{A}]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
Run Code Online (Sandbox Code Playgroud)
子报告JRXML
<?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="anuj_subreport1" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="149"/>
<queryString>
<![CDATA[select Sum("SensorTypeId") from "SensorType";]]>
</queryString>
<field name="sum" class="java.lang.Long"/>
<variable name="A" class="java.lang.Integer" resetType="None" calculation="System">
<variableExpression><![CDATA[$F{sum}]]></variableExpression>
</variable>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<staticText>
<reportElement x="169" y="59" width="100" height="20"/>
<textElement/>
<text><![CDATA[sum]]></text>
</staticText>
<textField>
<reportElement x="216" y="59" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{sum}]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="125" splitType="Stretch"/>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
Run Code Online (Sandbox Code Playgroud)
提前致谢..
虽然这个问题已经得到解答,但我想强调calculation="System"在主报告(调用SubReport的报告)中对变量的重要性.
在弄清楚之前我浪费了很多时间......
在上面的主报告JRXML的虚拟代码中,变量"A"正确具有calculation="System".注意:@GenericJon的答案涵盖了SubReport中的变量.
在子报表变量中,您有calculation=System.当您使用scriptlet自己计算变量时,应该使用此方法.您没有将相应的scriptlet附加到报表,因此永远不会计算变量.
您可能希望更改变量定义,以便在子报表的开头计算它,如下所示:
<variable name="A" class="java.lang.Integer" resetType="Report" calculation="Nothing">
<variableExpression><![CDATA[$F{sum}]]></variableExpression>
</variable>
Run Code Online (Sandbox Code Playgroud)
resetType="Report"报告运行时永远不会重置变量.
calculation="Nothing"将为数据集中的每一行评估variableExpression.
但是,这些属性可以省略,因为它们是使用的默认值.然后,您应该发现该变量已正确初始化.
| 归档时间: |
|
| 查看次数: |
24947 次 |
| 最近记录: |