水平打印结果

时间:2016-06-17 18:57:03

标签: layout printing jasper-reports

我想我正在尝试的不同于大多数其他海报询问水平印刷......至少我是这么认为的!

我有一个标签,目前正在打印每个结果的两个副本 - 每个细节带的一半。基本上他们只是拿起字段并将相同的集合放在一起,以便为返回的每一行获得两个标签。现在我们只需要一个,我不能让它使用第二列作为下一个标签 - 我能做的最好是让第二个列为空白,除非在一个字段中有多个结果...然后而不是将它打印在另一个下面,它只打印第二列中的那个字段。

我复制了一些我认为是jasperreports Horizo​​ntalReport.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 = Horizo​​ntal时,如果有多个饮食条目,它会执行类似的操作:

Smith, Steve M       3B32
   Halal Diet                          ADA Diet - 2400 Cal
_____________________________           ____________________________

它没有打印下一个条目,而是继续第二列中的现有条目。否则第二列为空白。

我希望这会让问题更清晰。我不知道如何在不将实际查询放入...的情况下使代码更易于验证,无论如何都无法运行。我假设查询的输出基于细节带中的文本字段是明显的。我删除了一些甚至没有被使用的字段,它仍然运行相同。

0 个答案:

没有答案