Jasper reports 需要在iReport中创建计数变量

Jasper reports 需要在iReport中创建计数变量,jasper-reports,pie-chart,Jasper Reports,Pie Chart,我需要在iReport中找到一个字段的计数。例如,我需要创建一个名为“CallCount”的变量,该变量的count字段为“CallType”。所以我需要在Piechart的Category部分使用“CallType”字段和“CallCount”变量作为度量。因此,饼图将显示调用类型及其调用计数。请在这方面帮助我……如果使用社区图表(JFreeCharts),以下是您将如何做到这一点 您需要向报告中添加一个组。在报表检查器窗口中右键单击根对象。单击“添加报告组”。然后添加一个包含您感兴趣的字段的

我需要在iReport中找到一个字段的计数。例如,我需要创建一个名为“CallCount”的变量,该变量的count字段为“CallType”。所以我需要在Piechart的Category部分使用“CallType”字段和“CallCount”变量作为度量。因此,饼图将显示调用类型及其调用计数。请在这方面帮助我……

如果使用社区图表(JFreeCharts),以下是您将如何做到这一点

您需要向报告中添加一个组。在报表检查器窗口中右键单击根对象。单击“添加报告组”。然后添加一个包含您感兴趣的字段的组。您不必添加页眉/页脚标注栏

这也为您创建了变量。它应该被命名为类似“组\名称\组\计数”

将新图表拖到摘要栏上。(我认为它必须是一个总结性的乐队,尽管我可能错了)。将唯一标识符(键表达式)设置为“$F{CallType}”,将数值(值表达式)设置为“$V{GROUP\U NAME\U GROUP\U COUNT}”)


如果这不起作用,请尝试手动创建变量。添加一个变量,将其命名为“CallCount”。将类设置为“java.lang.Integer”,计算设置为“Count”,并将类型重置为“Group”。重置组应与先前创建的组匹配。变量表达式应该是您感兴趣的字段。在本例中为“CallType”。将数值设置为“CallType”

以使用子数据集创建饼图:

什么是子数据集?

报告生成基于单个数据源,例如查询、JavaBean集合或XML文件。对于图表或交叉表,这可能是不够的,或者使用特定的查询或通常使用另一个数据集更容易检索数据。类似地,您可以使用子数据集提供嵌套在报表中的辅助记录(使用新数据源或甚至使用用于填充主报表的相同连接执行附加查询)。目前,您可以使用子数据集来填充图表、交叉表和列表元素,但开发人员可以通过创建自定义组件以其他方式使用它

报表中可以有任意数量的子数据集。每个都有自己的字段、变量和参数,可以根据需要执行查询。数据集记录可以分组为一个或多个组(如在主报告中);这些组用于子数据集变量

子数据集通过数据集运行链接到其元素。数据集运行指定子数据集检索和筛选数据以及处理用于填充元素的行所需的所有信息

使用子数据集创建报告的步骤:

  • 创建一个ireport
  • 添加新的子数据集

       

  • 转到报表检查器->右键单击文档->添加->子 数据集

       将出现以下窗口

  • 为子数据集指定一个名称

iReport允许您从“查询”对话框编辑子数据集的查询、排序和筛选选项。查询对话框可用于自动注册子数据集中的字段,注册方式与主报表相同(即从SQL查询中获取字段)

  • 单击查询并添加查询
在数据集的上下文中,组仅用于对记录进行分组,并且报告中没有与之关联的离散部分(例如,与组关联的页眉和页脚标注栏)。数据集组主要与变量计算结合使用

现在我们的子数据集已经创建

我们需要用饼图把它画出来

Select the pie chart and Right click on it.
右键单击->图表属性->图表数据

首先,从主报表发送的所有参数都必须在子数据集中声明(且类型相同)。 选择图表或表格并转到其数据集栏,您将找到数据集运行、参数和参数映射。选择上面的参数

现在将一个参数添加到列表中,您需要在expression edit中打开参数选项,并从中选择您在子数据集中创建的参数,该参数的名称与主报表输入的参数名称相同。 现在,您必须再次提及该参数的表达式“转到参数”选项,并选择在子数据集中创建的参数,该参数的名称与主报表输入的参数名称相同

现在,在同一窗口的详细信息部分,添加键表达式、值表达式和标签表达式(可选)

就这样。
现在运行报告。

嗨,史蒂文,谢谢你的回复。。我试着使用你提出的上述建议。然而,饼图给出了calltype的计数位置。相反,我需要该calltype的记录数。例如,我有一个名为“fire”的调用类型。我需要数据库中名为“fire”的calltype记录数。我正在使用域数据集使用iReports创建报告。请帮帮我,你说得对。我忘了添加组。添加组实际上使这更容易。检查更新的答案。嗨,史蒂文,再次感谢你的回复。我试着用你给出的更新答案。但是我无法得到我想要的…我已经使用Calltype字段创建了组,并且我已经使用您提到的组创建了变量“CallCount”,并且我在饼图的类别部分使用了“Calltype”字段,而不是我创建的“Calltype”组。我还在饼图的值表达式中使用了“CallCount”变量。。当我运行报告时,我得到的所有CallType显示callCount值为1。这不是我想要的。请帮助我。等待您的宝贵意见。嗨,史蒂文,当我使用html5图表时,我们在饼图的数据轴中有计算类型选项。当我为calltype字段提供count选项时,我得到