我想根据在明细栏中的一条记录中检索到的某些值的存在,有条件地在标题栏中显示一个文本字段。
是否可以通过表达式编辑器访问数据集结果列表,以便遍历结果列表并验证该特定值的存在?
答案 0 :(得分:0)
我将通过使用可变性然后在文本字段中评估时间来解决此问题。
首先定义一个变量,例如通过计算出现的次数来验证该特定值的存在。
<variable name="SERIES_D_COUNT" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA["D".equals($F{Series})?1:0]]></variableExpression>
</variable>
然后在上设置的条件显示一个文本字段,evaluationTime="Report"
一个常量,它指定一个表达式应在 填充过程结束。
请注意,您可以不使用printWhenExpression
,因为它不会延迟评估。如果您不想显示任何文本,请使用类似的表达式
<textField evaluationTime="Report">
<reportElement x="0" y="0" width="200" height="30" uuid="c5ce6914-e96a-4b7a-bcd9-b9febfb4d003"/>
<textFieldExpression><![CDATA[($V{SERIES_D_COUNT}>0? "Series D is present " + $V{SERIES_D_COUNT} + " times":"")]]></textFieldExpression>
</textField>
如果需要“浮动”布局,因此如果存在该值,则应移动不同的textField,因此无法使用此技术,因为填充管理器将需要保留位置,因此仅在报告为填充。在这种情况下,您需要执行子报告,例如重新查询数据库。
完整示例
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="TestAccessValue" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="4d3c7e04-2b50-46a0-b840-05ab72633357">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="ChartData"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="Series" class="java.lang.String"/>
<field name="X" class="java.lang.String"/>
<variable name="SERIES_D_COUNT" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA["D".equals($F{Series})?1:0]]></variableExpression>
</variable>
<title>
<band height="35" splitType="Stretch">
<textField evaluationTime="Report">
<reportElement x="0" y="0" width="200" height="30" uuid="c5ce6914-e96a-4b7a-bcd9-b9febfb4d003"/>
<textFieldExpression><![CDATA[($V{SERIES_D_COUNT}>0? "Series D is present " + $V{SERIES_D_COUNT} + " times":"")]]></textFieldExpression>
</textField>
</band>
</title>
<columnHeader>
<band height="24" splitType="Stretch">
<staticText>
<reportElement x="0" y="0" width="100" height="20" uuid="8ff3bf66-0530-47d1-bd9e-c8cd392b418d"/>
<text><![CDATA[Series]]></text>
</staticText>
<staticText>
<reportElement x="100" y="0" width="100" height="20" uuid="b6e5470d-fcd8-4770-8dc4-bd194f05e15b"/>
<text><![CDATA[X]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="24" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="f50e1756-50da-40a3-89f3-7a906659feb1"/>
<textFieldExpression><![CDATA[$F{Series}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20" uuid="7adb0ce7-3bf5-42ed-b41d-2daee9ee52df"/>
<textFieldExpression><![CDATA[$F{X}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>