我在Eclipse中使用JasperSoft Studio为教会生成注册表。页眉标题包含页面上的姓氏。因此,如果页面以A开头,则页面1将具有A-D,并以D结尾。
对于如此简单的任务而言,这变得非常复杂。我只想阅读last_name字段在每个页面的第一行和最后一行中的内容,取出它的第一个字母,然后将其粘贴在标题中。
欢迎任何想法,我很难过。
答案 0 :(得分:2)
要获取页面中字段的第一个和最后一个值,请使用变量和 resetType ,并在{上设置正确的 evalutationTime {1}}(您需要使用2个textField将它们正确地对齐)
此示例将说明如何在每个页面
上获取字段textField
的第一个和最后值>
页面中字段的第一个值
变量上的 resetType 将为$F{Last_Name}
resetType="None"
并在<variable name="firstValueOnPage" class="java.lang.String" resetType="None">
<variableExpression><![CDATA[$F{Last_Name}]]></variableExpression>
</variable>
中,将变量与textField
一起使用(默认情况下不需要标记)
evalution="Now"
页面中字段的最后一个值
变量的 resetType 为<textField>
<reportElement x="30" y="19" width="100" height="20" uuid="e6421031-6db7-4fd9-995f-94cef2eb3621"/>
<textFieldExpression><![CDATA[$V{firstValueOnPage}]]></textFieldExpression>
</textField>
resetType="Page"
并在textField中使用变量<variable name="lastValueOnPage" class="java.lang.String" resetType="Page">
<variableExpression><![CDATA[$F{Last_Name}]]></variableExpression>
</variable>
evaluationTime="Page"
要获得第一个和最后一个值的第一个字符,我看到你已经弄明白了,但是为了完成答案,textFieldExpression将是
<textField evaluationTime="Page">
<reportElement x="170" y="19" width="100" height="20" uuid="9100baa5-0095-4dc3-ac79-2cd87562a92d"/>
<textFieldExpression><![CDATA[$V{lastValueOnPage}]]></textFieldExpression>
</textField>
现在只需将两个textField放在一起(正确对齐),就可以获得所需的结果。
了解有关 resetType 和 evalutationTime (来自jasper report api 6.2.0)的更多信息的其他信息
<强> resetType 强>
无 - 在迭代过程中,通过数据源,变量随每条记录递增 报告 - 在报告填写过程中,变量永远不会增加 页面 - 每个新页面都会增加变量 列 - 每个新列都会增加变量 组 - 每次incrementGroup属性指定的组中断
时,变量都会递增
<强> EvalutationTime 强>
自动评估时间,表示参与的每个变量 表达式应在发动机决定的时间进行评估 乐队元素将在乐队结束时进行评估 列一个常量,指定在填充每列后应计算表达式。 组一个常量,指定在每次分组后应评估表达式 主用于主报告结束时评估的元素 现在一个常量,指定表达式应在填充过程中的恰好时刻进行评估。
页面一个常量,指定在填充每个页面后应评估表达式。
报告一个常量,指定应在填充过程结束时评估表达式。
答案 1 :(得分:1)
报告按Last_Name排序,因此我们可以使用计算最低和最高
定义变量:
<variable name="lowestFirstLetter" class="java.lang.String" resetType="Page" calculation="Lowest">
<variableExpression><![CDATA[$F{Last_Name}.substring(0,1)]]></variableExpression>
</variable>
<variable name="highestFirstLetter" class="java.lang.String" resetType="Page" calculation="Highest">
<variableExpression><![CDATA[$F{Last_Name}.substring(0,1)]]></variableExpression>
</variable>
并将带有evaluationTime="Page"
的textFields放入PageHeader band
<pageHeader>
<band height="35" splitType="Stretch">
<textField evaluationTime="Page">
<reportElement x="80" y="15" width="100" height="20" uuid="72af3431-eb3d-4f40-993b-4f0733e779cd"/>
<textFieldExpression><![CDATA[$V{lowestFirstLetter}]]></textFieldExpression>
</textField>
<textField evaluationTime="Page">
<reportElement x="260" y="15" width="150" height="20" uuid="0452517b-5066-4f8a-af6b-f941f1d3c1cb"/>
<textFieldExpression><![CDATA[$V{highestFirstLetter}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
祝你好运