当表达式显示时打印静态文本如果细节带中至少有一个非空字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当表达式显示时打印静态文本如果细节带中至少有一个非空字段相关的知识,希望对你有一定的参考价值。

我想在一个静态文本上放置一个printWhenExpression,该条件表示只有在详细信息区域的特定列中至少有一个非null textField才打印标签。

它只是在该列中存在非空字段时才打印列标题。

我尝试使用这个表达式:$F{textfield} != null,但它仅适用于第一个记录,如果第一个记录为空且第二个记录没有空值,则标签将被隐藏,我们希望它显示在哪里。

如果您需要更多信息,请回复。

以下是我的.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="IdpPdfSignature1" pageWidth="296" pageHeight="300" whenNoDataType="AllSectionsNoDetail" columnWidth="296" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="1c6e4be1-891b-4d0e-abfd-1c17f663d5be">
    <property name="ireport.scriptlethandling" value="0"/>
    <property name="ireport.encoding" value="UTF-8"/>
    <import value="net.sf.jasperreports.engine.*"/>
    <import value="java.util.*"/>
    <import value="net.sf.jasperreports.engine.data.*"/>
    <parameter name="mypic" class="java.io.InputStream" isForPrompting="false"/>
    <parameter name="mypic1" class="java.io.InputStream" isForPrompting="false"/>
    <parameter name="mypic2" class="java.io.InputStream" isForPrompting="false"/>
    <parameter name="group" class="java.lang.String" isForPrompting="false"/>
    <parameter name="device" class="java.lang.String" isForPrompting="false"/>
    <parameter name="timeperiod" class="java.lang.String" isForPrompting="false"/>
    <parameter name="customStartDate" class="java.util.Date" isForPrompting="false"/>
    <parameter name="customEndDate" class="java.util.Date" isForPrompting="false"/>
    <parameter name="footer" class="java.lang.String" isForPrompting="false"/>
    <field name="signatureID" class="java.lang.String">
        <fieldDescription><![CDATA[signatureID]]></fieldDescription>
    </field>
    <field name="signatureClassification" class="java.lang.String">
        <fieldDescription><![CDATA[signatureClassification]]></fieldDescription>
    </field>
    <field name="description" class="java.lang.String">
        <fieldDescription><![CDATA[description]]></fieldDescription>
    </field>
    <field name="count" class="java.lang.Long">
        <fieldDescription><![CDATA[count]]></fieldDescription>
    </field>
    <field name="formattedCount" class="java.lang.String"/>
    <field name="messageType" class="java.lang.String"/>
    <variable name="mypic" class="java.io.InputStream"/>
    <variable name="mypic1" class="java.io.InputStream"/>
    <variable name="mypic2" class="java.io.InputStream"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="16" splitType="Stretch">
            <staticText>
                <reportElement key="staticText-2" mode="Opaque" x="0" y="0" width="160" height="16" forecolor="#000000" backcolor="#CCCCCC" uuid="967c915b-1af1-4972-805f-0e3f365ba11c">
                    <printWhenExpression><![CDATA[new Boolean($F{messageType}!=null)]]></printWhenExpression>
                </reportElement>
                <box>
                    <pen lineWidth="0.25" lineColor="#000000"/>
                    <topPen lineWidth="0.25" lineColor="#000000"/>
                    <leftPen lineWidth="0.25" lineColor="#000000"/>
                    <bottomPen lineWidth="0.25" lineColor="#000000"/>
                    <rightPen lineWidth="0.25" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Arial" size="10" isBold="true" pdfFontName="Helvetica-Bold"/>
                </textElement>
                <text><![CDATA[Signature Name]]></text>
            </staticText>
            <staticText>
                <reportElement key="staticText-3" mode="Opaque" x="210" y="0" width="86" height="16" forecolor="#000000" backcolor="#CCCCCC" uuid="a998a72e-01fa-4c27-ad7e-1e3a6c3408d2"/>
                <box>
                    <pen lineWidth="0.25" lineColor="#000000"/>
                    <topPen lineWidth="0.25" lineColor="#000000"/>
                    <leftPen lineWidth="0.25" lineColor="#000000"/>
                    <bottomPen lineWidth="0.25" lineColor="#000000"/>
                    <rightPen lineWidth="0.25" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Arial" size="10" isBold="true" pdfFontName="Helvetica-Bold"/>
                </textElement>
                <text><![CDATA[Event Count]]></text>
            </staticText>
            <staticText>
                <reportElement key="staticText-11" mode="Opaque" x="160" y="0" width="50" height="16" forecolor="#000000" backcolor="#CCCCCC" uuid="5170b4a6-3531-412d-9f8f-bc32dc4de0be">
                    <printWhenExpression><![CDATA[new Boolean($F{messageType}!=null)]]></printWhenExpression>
                </reportElement>
                <box>
                    <pen lineWidth="0.25" lineColor="#000000"/>
                    <topPen lineWidth="0.25" lineColor="#000000"/>
                    <leftPen lineWidth="0.25" lineColor="#000000"/>
                    <bottomPen lineWidth="0.25" lineColor="#000000"/>
                    <rightPen lineWidth="0.25" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Arial" size="10" isBold="true" pdfFontName="Helvetica-Bold"/>
                </textElement>
                <text><![CDATA[Type]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="16" splitType="Stretch">
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement key="textField-7" stretchType="RelativeToTallestObject" x="160" y="0" width="50" height="16" uuid="917d3aff-44a7-4a26-865a-d466aff3ab00">
                    <printWhenExpression><![CDATA[new Boolean($F{messageType}!=null)]]></printWhenExpression>
                </reportElement>
                <box leftPadding="5">
                    <topPen lineWidth="0.25" lineColor="#999999"/>
                    <leftPen lineWidth="0.25" lineColor="#999999"/>
                    <bottomPen lineWidth="0.25" lineColor="#999999"/>
                    <rightPen lineWidth="0.25" lineColor="#999999"/>
                </box>
                <textElement textAlignment="Left">
                    <font fontName="Arial"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{messageType}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement key="textField" stretchType="RelativeToTallestObject" x="0" y="0" width="160" height="16" uuid="72492119-a45f-49c5-8fb8-19252c57e402">
                    <printWhenExpression><![CDATA[new Boolean($F{messageType}!=null)]]></printWhenExpression>
                </reportElement>
                <box leftPadding="5" rightPadding="10">
                    <topPen lineWidth="0.25" lineColor="#999999"/>
                    <leftPen lineWidth="0.25" lineColor="#999999"/>
                    <bottomPen lineWidth="0.25" lineColor="#999999"/>
                    <rightPen lineWidth="0.25" lineColor="#999999"/>
                </box>
                <textElement>
                    <font fontName="Arial"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{signatureClassification}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement key="textField" stretchType="RelativeToTallestObject" x="210" y="0" width="86" height="16" uuid="223be44f-8565-40e3-9d43-0f13b4e159b7"/>
                <box leftPadding="5" rightPadding="10">
                    <topPen lineWidth="0.25" lineColor="#999999"/>
                    <leftPen lineWidth="0.25" lineColor="#999999"/>
                    <bottomPen lineWidth="0.25" lineColor="#999999"/>
                    <rightPen lineWidth="0.25" lineColor="#999999"/>
                </box>
                <textElement textAlignment="Right">
                    <font fontName="Arial"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{formattedCount}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>
答案

您可以使用表组件来实现此目的,而不是通过在表的列标题的“列打印时”属性下的条件下给出打印来使用静态文本。

即列打印时= $ F {messageType}!= null

PFB更正了JRXML:

<summary>

    <band height="55" splitType="Stretch">
        <componentElement>
            <reportElement uuid="632c8fad-e35f-4b89-b28e-b363b0711c06" x="0" y="0" width="270" height="55"/>
            <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                <datasetRun subDataset="Table Dataset 1" uuid="bf16282a-8672-46cb-9849-4966b5f8c969">
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
                </datasetRun>
                <jr:column width="90" uuid="00429e67-6d71-4b66-9eb4-22d0c649e7a4">
                    <jr:columnHeader height="30" rowSpan="1">
                        <staticText>
                            <reportElement uuid="a62a81ca-ceae-4178-9e4e-6ca17fc89c69" key="staticText-2" mode="Opaque" x="0" y="0" width="90" height="30" forecolor="#000000" backcolor="#CCCCCC">
                                <printWhenExpression><![CDATA[new Boolean($F{messageType}!=null)]]></printWhenExpression>
                            </reportElement>
                            <box>
                                <pen lineWidth="0.25" lineColor="#000000"/>
                                <topPen lineWidth="0.25" lineColor="#000000"/>
                                <leftPen lineWidth="0.25" lineColor="#000000"/>
                                <bottomPen lineWidth="0.25" lineColor="#000000"/>
                                <rightPen lineWidth="0.25" lineColor="#000000"/>
                            </box>
                            <textElement textAlignment="Center" verticalAlignment="Middle">
                                <font fontName="Arial" isBold="true" pdfFontName="Helvetica-Bold"/>
                            </textElement>
                            <text><![CDATA[Signature Name]]></text>
                        </staticText>
                    </jr:columnHeader>
                    <jr:detailCell height="20" rowSpan="1">
                        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                            <reportElement uuid="cb654043-45a4-4742-86ed-ed9818716db2" key="textField" stretchType="RelativeToTallestObject" x="0" y="0" width="90" height="20">
                                <printWhenExpression><![CDATA[new Boolean($F{messageType}!=null)]]></printWhenExpression>
                            </reportElement>
                            <box leftPadding="5" rightPadding="10">
                                <topPen lineWidth="0.25" lineColor="#999999"/>
                                <leftPen lineWidth="0.25" lineColor="#999999"/>
                                <bottomPen lineWidth="0.25" lineColor="#999999"/>
                                <rightPen lineWidth="0.25" lineColor="#999999"/>
                            </box>
                            <textElement>
                                <font fontName="Arial"/>
                            </textElement>
                            <textFieldExpression><![CDATA[$F{signatureClassification}]]></textFieldExpression>
                        </textField>
                    </jr:detailCell>
                </jr:column>
                <jr:column width="90" uuid="7ebf1fdd-52e5-43da-96f0-1c01a7cb0876">
                    <printWhenExpression><![CDATA[$F{messageType}!=null]]></printWhenExpression>
                    <jr:columnHeader height="30" rowSpan="1">
                        <staticText>
                            <reportElement uuid="d96cce84-1318-49aa-a6d2-3a17e4329ef3" key="staticText-11" mode="Opaque" x="0" y="0" width="90" height="30" forecolor="#000000" backcolor="#CCCCCC">
                                <printWhenExpression><![CDATA[new Boolean($F{messageType}!=null)]]></printWhenExpression>
                            </reportElement>
                            <box>
                                <pen lineWidth="0.25" lineColor="#000000"/>
                                <topPen lineWidth="0.25" lineColor="#000000"/>
                                <leftPen lineWidth="0.25" lineColor="#000000"/>
                                <bottomPen lineWidth="0.25" lineColor="#000000"/>
                                <rightPen lineWidth="0.25" lineColor="#000000"/>
                            </box>
                            <textElement textAlignment="Center" verticalAlignment="Middle">
                                <font fontName="Arial" isBold="true" pdfFontName="Helvetica-Bold"/>
                            </textElement>
                            <text><![CDATA[Type]]></text>
                        </staticText>
                    </jr:columnHeader>
                    <jr:detailCell height="20" rowSpan="1">
                        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                            <reportElement uuid="4832a90d-505e-4f13-87bf-0a7fe6e3a00f" key="textField-7" stretchType="RelativeToTallestObject" x="0" y="0" width="90" height="20">
                                <printWhenExpression><![CDATA[$F{messageType}]]></printWhenExpression>
                            </reportElement>
                            <box leftPadding="5">
                                <topPen lineWidth="0.25" lineColor="#999999"/>
                                <leftPen lineWidth="0.25" lineColor="#999999"/>
                                <bottomPen lineWidth="0.25" lineColor="#999999"/>
                                <rightPen lineWidth="0.25" lineColor="#999999"/>
                            </box>
                            <textElement textAlignment="Left">
                                <font fontName="Arial"/>
                            </textElement>
                            <textFieldExpression><![CDATA[$F{messageType}]]></textFieldExpression>
                        </textField>
                    </jr:detailCell>
                </jr:column>
                <jr:column width="90" uuid="89b50640-0509-4b61-8aa3-aa68eb3e6685">
                    <jr:columnHeader height="30" rowSpan="1">
                        <staticText>
                            <reportElement uuid="fe68d8bf-3f0d-4202-a53c-8c6f328e4d16" key="staticText-3" mode="Opaque" x="0" y="0" width="90" height="30" forecolor="#000000" backcolor="#CCCCCC"/>
                            <box>
                                <pen lineWidth="0.25" lineColor="#000000"/>
                                <topPen lineWidth="0.25" lineColor="#000000"/>
                                <leftPen lineWidth="0.25" lineColor="#000000"/>
                                <bottomPen lineWidth="0.25" lineColor="#000000"/>
                                <rightPen lineWidth="0.25" lineColor="#000000"/>
                            </box>
                            <textElement textAlignment="Center" verticalAlignment="Middle">
                                <font fontName="Arial" isBold="true" pdfFontName="Helvetica-Bold"/>
                            </textElement>
    

以上是关于当表达式显示时打印静态文本如果细节带中至少有一个非空字段的主要内容,如果未能解决你的问题,请参考以下文章

打印出列表中至少有一个公共数字的相邻数字

有没有办法在文本字段表达式中访问SQL查询结果,以有条件地在标题带中显示它?

在单个波段中具有多行时,数据溢出会拉伸一行

查找文本文件中至少有两个共同单词的所有行(Bash)

如果这些行中至少有一个具有给定值,则选择具有给定 ID 的所有行

检查孩子是否在Prolog中至少有3个父母