获取 Jasper Reports 表中第一行和最后一行的第一个字母

web*_*r07 5 jasper-reports

我在 Eclipse 中使用 JasperSoft Studio 为教堂生成注册表。页眉具有页面上姓氏的标签。因此,如果页面以 A 开头并以 D 结尾,则第 1 页将包含 AD。在此处输入图片说明

对于如此简单的任务来说,这变得非常复杂。我只想读取每个页面的第一行和最后一行中的last_name字段是什么,取它的第一个字母,然后将其粘贴在标题中。

欢迎任何想法,我很难过。

Pet*_*erg 3

要获取页面中字段的第一个和最后一个值,您可以使用带有resetType的变量,并在上设置正确的评估时间(您将需要使用2个文本字段将它们正确地一个挨一个地对齐)textField

此示例将展示如何获取每个页面上字段的第一个最后一个值$F{Last_Name}

页面中字段的第一个值

变量上的重置类型将是resetType="None"

<variable name="firstValueOnPage" class="java.lang.String" resetType="None">
    <variableExpression><![CDATA[$F{Last_Name}]]></variableExpression>
</variable>
Run Code Online (Sandbox Code Playgroud)

并在 中textField,使用变量 with evalution="Now"(这是默认值,因此不需要标签)

<textField>
   <reportElement x="30" y="19" width="100" height="20" uuid="e6421031-6db7-4fd9-995f-94cef2eb3621"/>
    <textFieldExpression><![CDATA[$V{firstValueOnPage}]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)

页面中字段的最后一个值

你的变量的resetType是resetType="Page"

<variable name="lastValueOnPage" class="java.lang.String" resetType="Page">
    <variableExpression><![CDATA[$F{Last_Name}]]></variableExpression>
</variable>
Run Code Online (Sandbox Code Playgroud)

并在文本字段中使用变量evaluationTime="Page"

<textField evaluationTime="Page">
    <reportElement x="170" y="19" width="100" height="20" uuid="9100baa5-0095-4dc3-ac79-2cd87562a92d"/>
    <textFieldExpression><![CDATA[$V{lastValueOnPage}]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)

为了仅获取第一个和最后一个值的第一个字符,我发现您已经弄清楚了,但是为了完成答案,textFieldExpression 将是

<textFieldExpression><![CDATA[($V{firstValueOnPage}!=null&&$V{firstValueOnPage}.length()>0)?String.valueOf($V{firstValueOnPage}.charAt(0)).toUpperCase():""]]></textFieldExpression>
Run Code Online (Sandbox Code Playgroud)

现在只需将两个文本字段放在一起(正确对齐它们),您就会得到所需的结果。

一些附加信息,以了解有关resetTypeevaluationTime的更多信息(来自jasper report api 6.2.0

重置类型

- 在数据源迭代过程中,变量随每条记录递增。 报告- 在报告填充过程中,变量永远不会递增。
- 该变量随着每个新页而递增。
- 变量随着每个新列而递增。
- 每次由incrementGroup属性指定的组中断时,变量都会递增

评估时间

自动计算时间表示参与表达式的每个变量应在引擎决定的时间进行计算。
频段该元素将在频段结束时进行评估。
Column一个常量,指定在填充每列后应计算表达式。 一个常量,指定应在每个组中断后计算表达式。
主数据用于在主报告结束时评估的元素。
Now一个常量,指定应在填充过程中遇到表达式时立即对其求值。
Page一个常量,指定在填充每个页面后应计算表达式。
报告一个常量,指定应在填充过程结束时计算表达式。