我有详细的文本字段和子报表。我将值传递给子报表,该子报表显示特定记录的详细信息。问题是当子报表显示某个值时文本字段不会拉伸。
以下是我的jrxml带细节带的一部分:
<detail>
<band height="40" isSplitAllowed="true" >
<textField isStretchWithOverflow="false" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
style="columnHeader"
mode="Opaque"
x="0"
y="0"
width="108"
height="20"
backcolor="#9999FF"
key="groupMenu-1"/>
<box></box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font pdfFontName="Helvetica-Bold" isBold="true" isPdfEmbedded ="false" pdfEncoding ="Cp1252"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[str("Code")]]></textFieldExpression>
</textField>
<subreport isUsingCache="true">
<reportElement
mode="Transparent"
x="0"
y="39"
width="100"
height="1"
key="subreport-1"
stretchType="RelativeToTallestObject"
positionType="Float"
isPrintWhenDetailOverflows="true"/>
<subreportParameter name="requestListId">
<subreportParameterExpression><![CDATA[$F{SPREADSHEET_REPORT_ID}]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<subreportExpression class="java.lang.String"><![CDATA[$P{subReportPath}]]></subreportExpression>
</subreport>
</band>
</detail>
答案 0 :(得分:0)
在您分析jrxml之前,您可以尝试(在iReport中)右键单击文本字段&gt;属性&gt;拉伸类型,并选择两个非默认值(适合您的情况,我还不完全了解)
答案 1 :(得分:0)
我不确定这是否可行,拉伸时的文本字段不推送子报表。但是你可以用其他方法处理它。
为什么不在“详细信息”区域上创建一个组带,并将此组表达式设置为$F{CODE}
,这样每次代码更改时都会呈现该组,同时与之相关的详细信息带此代码将在
第二个选项,为什么不将CODE作为参数发送到子报表并将其放在报表头中?
答案 2 :(得分:0)
你的意思是随着更多的数据填充它,该字段会向下延伸吗?
我认为这就是isStretchWithOverflow =“false”的用途。只是把它变成真实而不是假。
我可能不明白你在问什么:)
答案 3 :(得分:0)
我试过但它不起作用。所以我做的是接受子报表的查询并将其放在原始报表的查询中,类似于:
SELECT p.id AS 'id', ...*
FROM permiso AS p
...
+
SELECT *
FROM permiso AS p
....
WHERE p.id = $P{id}
GROUP BY p.id
=>
SELECT p.id AS 'id', ...*
FROM permiso AS p
INNER JOIN (SELECT p.id AS 'id', *
FROM permiso AS p
....
GROUP BY p.id) AS subreport ON subreport.id = p.id
将子报表的字段放在原始报表中,这是使该字段“成为最大对象最高”的唯一方法。