Java 拉伸带区中带有子报表的文本字段
我有一个文本字段和一个子报告在详细波段。我将该值传递给子报表,该子报表显示特定记录的详细信息。问题在于,当子报表显示某些值时,文本字段不会拉伸 以下是我的jrxml的一部分和详细信息栏:Java 拉伸带区中带有子报表的文本字段,java,jasper-reports,ireport,Java,Jasper Reports,Ireport,我有一个文本字段和一个子报告在详细波段。我将该值传递给子报表,该子报表显示特定记录的详细信息。问题在于,当子报表显示某些值时,文本字段不会拉伸 以下是我的jrxml的一部分和详细信息栏: <detail> <band height="40" isSplitAllowed="true" > <textField isStretchWithOverflow="false" isBlankWhenNull="true" evaluationTime="Now
<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>
在评测jrxml之前,您可以尝试(在iReport中)右键单击textfield>Properties>Stretch类型,并从两个非默认值中选择一个(以适合您的情况为准,我还不完全理解)我不确定这是否可行,拉伸时的textfield不会推送子报表。但你可以用其他方法来处理
- 为什么不在“Detail”标注栏上创建一个组标注栏,并将该组表达式设置为
,以便每次代码更改时都会呈现该组,同时,与该代码相关的详细标注栏将直接呈现在其之后$F{code}
- 第二个选项,为什么不将代码作为参数发送到子报表并将其放在报表标题中
我可能不明白你在问什么:)我试过了,但没有成功。所以我所做的就是把对子报表的查询放到原始报表的查询中,类似这样:
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
并将子报表的字段放在原始报表中,这是使该字段“最高到最大的对象”的唯一方法。更新您的帖子,以便可以看到jrxsml。您可以解释更多内容或放置屏幕截图吗?我已经这样做了,当同一波段内没有子报表时,它会工作,如果带区内有子报表,则它不会拉伸,而是子报表适合。请尝试将子报表的位置类型设置为“浮动”