我想我正在尝试的不同于大多数其他海报询问水平印刷......至少我是这么认为的!
我有一个标签,目前正在打印每个结果的两个副本 - 每个细节带的一半。基本上他们只是拿起字段并将相同的集合放在一起,以便为返回的每一行获得两个标签。现在我们只需要一个,我不能让它使用第二列作为下一个标签 - 我能做的最好是让第二个列为空白,除非在一个字段中有多个结果...然后而不是将它打印在另一个下面,它只打印第二列中的那个字段。
我复制了一些我认为是jasperreports HorizontalReport.jrxml样本中的相关设置,包括
Columns = 2, Print Order = Horizontal. Column Space = 5, Column Width=289
我甚至在我的田地周围放了一个框架,但这没有帮助。
这是我正在使用的jrxml。 (我更改了一些字段名称并删除了参数和查询)
<?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="d_allergy_cautions_rpt.srd" language="groovy" columnCount="2" printOrder="Horizontal" pageWidth="612" pageHeight="800" columnWidth="289" columnSpacing="5" leftMargin="14" rightMargin="14" topMargin="36" bottomMargin="36" uuid="3d9bd29d-ecad-4bdd-90f1-a1e5737a4290">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<field name="one" class="java.lang.String">
<fieldDescription><![CDATA[one_COLUMN_1]]></fieldDescription>
</field>
<field name="two" class="java.lang.String">
<fieldDescription><![CDATA[two_COLUMN_2]]></fieldDescription>
</field>
<field name="three" class="java.lang.String">
<fieldDescription><![CDATA[three_COLUMN_3]]></fieldDescription>
</field>
<field name="diet_caution" class="java.lang.String">
<fieldDescription><![CDATA[diet_caution_COLUMN_6]]></fieldDescription>
</field>
<field name="calories" class="java.lang.Long">
<fieldDescription><![CDATA[calories_COLUMN_7]]></fieldDescription>
</field>
<field name="more_cautions_flg" class="java.lang.String">
<fieldDescription><![CDATA[more_cautions_flg_COLUMN_14]]></fieldDescription>
</field>
<variable name="CURRENT_PAGE_NUMBER" class="java.lang.Integer" resetType="None">
<variableExpression><![CDATA[$V{PAGE_NUMBER}]]></variableExpression>
</variable>
<group name="1">
<groupExpression><![CDATA[$F{one}.toString()]]></groupExpression>
<groupFooter>
<band height="1"/>
</groupFooter>
</group>
<pageHeader>
<band/>
</pageHeader>
<detail>
<band height="48" splitType="Prevent">
<textField pattern="[general]" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" mode="Transparent" x="2" y="8" width="28" height="22" isRemoveLineWhenBlank="true" printWhenGroupChanges="1" forecolor="#000000" backcolor="#FFFFFF" uuid="d530fc96-dc89-4280-a0e8-be4d4efdfa15"/>
<textElement textAlignment="Left">
<font fontName="Arial" size="16" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<textFieldExpression><![CDATA[(($F{more_cautions_flg}.equals("Y")) ? "*" : "")]]></textFieldExpression>
</textField>
<textField pattern="[general]" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" mode="Transparent" x="31" y="36" width="98" height="12" isRemoveLineWhenBlank="true" printWhenGroupChanges="1" forecolor="#000000" uuid="942c6421-1aa5-4cfb-bd55-ca9d3a7793f2"/>
<textElement textAlignment="Left">
<font fontName="Arial" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<textFieldExpression><![CDATA[$F{calories}==null? "" : $F{calories} + " Calorie"]]></textFieldExpression>
</textField>
<textField pattern="[general]" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" mode="Transparent" x="29" y="18" width="202" height="12" isRemoveLineWhenBlank="true" printWhenGroupChanges="1" forecolor="#000000" backcolor="#FFFFFF" uuid="69540580-ba24-41d8-aed0-d839e16b6bb9">
<printWhenExpression><![CDATA[((($F{diet_caution}.equals("")) || ($F{diet_caution}.equals("ADA DIET DO NOT SHOW"))) ? 0 : 1) == 1]]></printWhenExpression>
</reportElement>
<textElement textAlignment="Left">
<font fontName="Arial" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<textFieldExpression><![CDATA[$F{diet_caution}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" pattern="[general]" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" mode="Transparent" x="9" y="0" width="203" height="12" printWhenGroupChanges="1" forecolor="#000000" backcolor="#FFFFFF" uuid="961ad14c-d77c-40c8-a218-473f3e2a3212"/>
<textElement textAlignment="Left">
<font fontName="Arial" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<textFieldExpression><![CDATA[$F{two}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" pattern="[general]" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" mode="Transparent" x="234" y="0" width="39" height="12" printWhenGroupChanges="1" forecolor="#000000" backcolor="#FFFFFF" uuid="6857d450-2d00-48f0-9bd7-73ed6de3d03a"/>
<textElement textAlignment="Left">
<font fontName="Arial" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<textFieldExpression><![CDATA[$F{three}]]></textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>
<band height="12">
<textField pattern="[general]" isBlankWhenNull="true">
<reportElement mode="Transparent" x="392" y="2" width="184" height="10" forecolor="#000000" backcolor="#FFFFFF" uuid="f5346fdd-7447-470c-883a-5153303dbb21"/>
<textElement textAlignment="Right">
<font fontName="Arial" size="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<textFieldExpression><![CDATA["Report for " + new SimpleDateFormat("MM/dd/yyyy").format(TODAY())]]></textFieldExpression>
</textField>
<staticText>
<reportElement mode="Transparent" x="204" y="0" width="164" height="12" forecolor="#000000" backcolor="#FFFFFF" uuid="8209f151-af1b-473e-977d-8418ae00ac34"/>
<box>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement textAlignment="Right">
<font fontName="Arial" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<text><![CDATA[ * = Additional Data ]]></text>
</staticText>
<staticText>
<reportElement mode="Transparent" x="3" y="2" width="127" height="10" forecolor="#808080" backcolor="#FFFFFF" uuid="7f33d259-417c-42b3-9a3c-dc50d874d678"/>
<textElement textAlignment="Left">
<font fontName="Arial" size="8" isBold="false" isItalic="true" isUnderline="false" isStrikeThrough="false"/>
</textElement>
<text><![CDATA[file location]]></text>
</staticText>
</band>
</pageFooter>
</jasperReport>
我在哪里错了?
编辑:当前输出如下:
Doe, John A 2A21 Doe, John A 2A21
High Protein Diet High Protein Diet
__________________________ ______________________
Smith, Steve M 3B32 Smith, Steve M 3B32
Halal Diet Halal Diet
ADA Diet 2400 Cal ADA Diet 2400 Cal
我希望它看起来像这样:
Doe, John A 2A21 Smith, Steve M 3B32
High Protein Diet Halal Diet
ADA Diet 2400 Cal
__________________________ __________________________
在我看来 - 其他一切都是平等的 - isPrintRepeatedValues应该是假的....每个人应该只有几种饮食中的一种。
当我创建两列并且PrintOrder = Horizontal时,如果有多个饮食条目,它会执行类似的操作:
Smith, Steve M 3B32
Halal Diet ADA Diet - 2400 Cal
_____________________________ ____________________________
它没有打印下一个条目,而是继续第二列中的现有条目。否则第二列为空白。
我希望这会让问题更清晰。我不知道如何在不将实际查询放入...的情况下使代码更易于验证,无论如何都无法运行。我假设查询的输出基于细节带中的文本字段是明显的。我删除了一些甚至没有被使用的字段,它仍然运行相同。