如何从表中的数据源返回值主报告中的iReport?(How to return value from

2019-07-29 05:14发布

我有我的iReport的一个表,它自然有它的数据集,我有一个变量,定义和表中的数据集初始化返回一个值(表的范围之内肯定不会,不是外面),我想用我的持有该表的主报告。

我该怎么做或其它方法吗?

Answer 1:

如果你想从表中的数据集的一些数据,你实际上可以做到这一点。 我发现了一个卑鄙的手段来实现这一目标。

  1. 创建变量variableMapName类型的java.util.Map在主报告,并表达对其进行初始化new java.util.HashMap()

  2. 创建参数parameterMapName类型的java.util.Map表数据集内

  3. 链接数据参数使用从主报表变量“编辑表格数据源- >参数- >添加- > $ P {} parameterMapName = $ V {} variableMapName”(右键单击主报告模板表)

  4. 创建变量putResult类型java.lang.String的表的数据源。 寻找这个变量将表达类似这样的

$P{parameterMapName}.put("KEY", $F{fieldYouWantReturn}) + $P{parameterMapName}.put("KEY2", $F{otherFieldYouWantReturn})

现在,你必须通过使用从主报告表数据源的数据的能力$V{variableMapName}.get("KEY")

这实在是一个肮脏的黑客,但有时你没有其他办法做一些事情。 谢谢!



Answer 2:

正确的方法(碧玉报告第5节/第6节)从使用一个组件返回值的subDataset是在两个主报告和使用变量,定义变量subDataset

示例 (返回主报告表中的记录数)

  1. 在主报告中定义一个变量

     <variable name="TABLE_COUNT" class="java.lang.Integer" resetType="None"> <initialValueExpression><![CDATA[0]]></initialValueExpression> </variable> 
  2. subdataset定义一个变量(例如,在可变的生成将被用于$V{REPORT_COUNT}

  3. 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>


Answer 3:

这听起来很合理...但我不知道它是否是可能的。 这可能是一个有用的增强请求。

另一种方法是使用一个报表。 任何可能在表中是可能的子报表。 子报表有返回值,这将让你传回您所需要的信息。



Answer 4:

您将无法从表中的数据集返回一个变量主报告,而反之则是可能的。 一种替代可以通过mdahlman的建议。 使用子报表来代替。



Answer 5:

现在,您可以从表中的数据集中返回值主报告。

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> 



Answer 6:

在地图类型,你可以休息的任何类型的返回值,从表中设定的主报告是不可能的。

虽然可以使用子报告有选择返回values.If可能尝试到位表的使用子报告。



文章来源: How to return value from table's DataSource to main report in iReport?