我有我的iReport的一个表,它自然有它的数据集,我有一个变量,定义和表中的数据集初始化返回一个值(表的范围之内肯定不会,不是外面),我想用我的持有该表的主报告。
我该怎么做或其它方法吗?
我有我的iReport的一个表,它自然有它的数据集,我有一个变量,定义和表中的数据集初始化返回一个值(表的范围之内肯定不会,不是外面),我想用我的持有该表的主报告。
我该怎么做或其它方法吗?
如果你想从表中的数据集的一些数据,你实际上可以做到这一点。 我发现了一个卑鄙的手段来实现这一目标。
创建变量variableMapName
类型的java.util.Map
在主报告,并表达对其进行初始化new java.util.HashMap()
创建参数parameterMapName
类型的java.util.Map
表数据集内
链接数据参数使用从主报表变量“编辑表格数据源- >参数- >添加- > $ P {} parameterMapName = $ V {} variableMapName”(右键单击主报告模板表)
创建变量putResult
类型java.lang.String
的表的数据源。 寻找这个变量将表达类似这样的
$P{parameterMapName}.put("KEY", $F{fieldYouWantReturn}) + $P{parameterMapName}.put("KEY2", $F{otherFieldYouWantReturn})
现在,你必须通过使用从主报告表数据源的数据的能力$V{variableMapName}.get("KEY")
这实在是一个肮脏的黑客,但有时你没有其他办法做一些事情。 谢谢!
正确的方法(碧玉报告第5节/第6节)从使用一个组件返回值的subDataset
是在两个主报告和使用变量,定义变量subDataset
。
示例 (返回主报告表中的记录数)
在主报告中定义一个变量
<variable name="TABLE_COUNT" class="java.lang.Integer" resetType="None"> <initialValueExpression><![CDATA[0]]></initialValueExpression> </variable>
在subdataset
定义一个变量(例如,在可变的生成将被用于$V{REPORT_COUNT}
在datasetRun
指示哪些subDataset
变量( fromVariable
)应该回归到主报表变量( toVariable
)
<datasetRun subDataset="tableData" uuid="fa5df3de-f4c5-4bfc-8274-bd064e8b81e6"> <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> <returnValue fromVariable="REPORT_COUNT" toVariable="TABLE_COUNT"/> </datasetRun>
该TABLE_COUNT
变量可以在主报告中使用,只记得设置正确evaluationTime
显示的值 (在主报告)
<textField evaluationTime="Report">
<reportElement x="0" y="0" width="100" height="20" uuid="d67ddb3e-b0cc-4fae-9e05-f40eb0f7e059"/>
<textFieldExpression><![CDATA[$V{TABLE_COUNT}]]></textFieldExpression>
</textField>
这听起来很合理...但我不知道它是否是可能的。 这可能是一个有用的增强请求。
另一种方法是使用一个报表。 任何可能在表中是可能的子报表。 子报表有返回值,这将让你传回您所需要的信息。
您将无法从表中的数据集返回一个变量主报告,而反之则是可能的。 一种替代可以通过mdahlman的建议。 使用子报表来代替。
现在,您可以从表中的数据集中返回值主报告。
在jasper studio 6.0.1,I
发现表的属性命名的数据集,它具有恢复设置的值。 但进入集,我发现表“配置的返回值”是错误的,碧玉工作室拿错了“从变量变量”,stuio反转两个变量。 “从变量”是表的局部变量,“价值”是主报告variable.You必须在源manaualedit,并删除"incrementerFactoryClass=""".
我测试,它是确定.The返回值被打印在主报告。
接下来是我的一块JRXML的。
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> <datasetRun subDataset="workscore" uuid="307278bc-db98-4de2-9b50-dea5dc69b496"> <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> <returnValue fromVariable="returnscore" toVariable="workscore"/> </datasetRun>
在地图类型,你可以休息的任何类型的返回值,从表中设定的主报告是不可能的。
虽然可以使用子报告有选择返回values.If可能尝试到位表的使用子报告。