如何将Ad Hoc数据库内容添加到Textfield

时间:2016-03-15 18:39:55

标签: jasper-reports

我有一个输入参数,它是一个ID。

我想在数据库中使用查找表将该ID扩展为长名称,以便在报告标题中使用。

如何从SQL查询中将文本添加到文本字段中而无需担心表格数据行?

1 个答案:

答案 0 :(得分:1)

您可以使用标题频段中的列表组件。此列表(或组件)将与另一个(非主要)数据源相关联,以显示信息(在您的情况下,通过参数传递的名称ID)。

主要数据源将由 Detail band(或其他 Table 组件及其自己的数据源)用于显示按参数值(Id)过滤的数据在你的情况下)。

借助 textField 的属性 isStretchWithOverflow (带有 true 值),我们可以保证所有文字都将使用 textField

样本

在此示例中,我使用了随 Jaspersoft Studio 分发的数据库。参数 addrId 用于通过地址表的 id 字段过滤数据。此参数已映射到具有相同名称的 List 的数据源参数( addrId )。是的,我已使用标题频段上的列表组件显示有关外部参数值的信息(此示例中的城市和地址街道) )。在 Detail 频段,我们将显示与我们的地址相关的文档(表文档)的信息(由 addrId 定义)

报告的模板

<?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="growing_text" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="77f0cb04-7f4b-43dc-af12-89c25fa7c58c">
    <subDataset name="dsAddrTitle" uuid="0eb7cd0c-f4f1-408d-be13-dc484fda80d5">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Sample DB"/>
        <parameter name="addrId" class="java.lang.Integer"/>
        <queryString>
            <![CDATA[SELECT city + ', ' + street AS name FROM address WHERE id=$P{addrId}]]>
        </queryString>
        <field name="NAME" class="java.lang.String"/>
    </subDataset>
    <parameter name="addrId" class="java.lang.Integer">
        <defaultValueExpression><![CDATA[33]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[SELECT ID, ADDRESSID, TOTAL FROM DOCUMENT WHERE  ADDRESSID=$P{addrId} ORDER BY ADDRESSID]]>
    </queryString>
    <field name="ID" class="java.lang.Integer"/>
    <field name="ADDRESSID" class="java.lang.Integer"/>
    <field name="TOTAL" class="java.math.BigDecimal"/>
    <title>
        <band height="10" splitType="Stretch">
            <componentElement>
                <reportElement x="160" y="0" width="40" height="10" uuid="f4cb4e5c-e2d7-4927-b143-4cfcd7d99b76"/>
                <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" ignoreWidth="true">
                    <datasetRun subDataset="dsAddrTitle" uuid="4bf3eb57-f752-4856-ac3a-fd7e3a33f434">
                        <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
                        <datasetParameter name="addrId">
                            <datasetParameterExpression><![CDATA[$P{addrId}]]></datasetParameterExpression>
                        </datasetParameter>
                        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    </datasetRun>
                    <jr:listContents height="30" width="100">
                        <textField isStretchWithOverflow="true">
                            <reportElement x="0" y="0" width="40" height="10" uuid="1b533c30-7868-450b-a5b9-59d5130dcb67"/>
                            <textFieldExpression><![CDATA[$F{NAME}]]></textFieldExpression>
                        </textField>
                    </jr:listContents>
                </jr:list>
            </componentElement>
        </band>
    </title>
    <columnHeader>
        <band height="30">
            <staticText>
                <reportElement x="0" y="0" width="185" height="30" uuid="100faa3b-790d-4dc6-b86c-8911a8762207"/>
                <text><![CDATA[ID]]></text>
            </staticText>
            <staticText>
                <reportElement x="185" y="0" width="185" height="30" uuid="aef6af65-f7b5-42e9-a102-aeb272f99103"/>
                <text><![CDATA[ADDRESSID]]></text>
            </staticText>
            <staticText>
                <reportElement x="370" y="0" width="185" height="30" uuid="2c176a21-6387-4505-836e-7e250751755f"/>
                <text><![CDATA[TOTAL]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="30" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="185" height="30" uuid="22cbe96d-5322-40e3-bd96-d2aa9bf35dd2"/>
                <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="185" y="0" width="185" height="30" uuid="3adedcc9-f60e-4664-bbe8-6b7d7b8e13a4"/>
                <textFieldExpression><![CDATA[$F{ADDRESSID}]]></textFieldExpression>
            </textField>
            <textField pattern="#,##0.00#">
                <reportElement x="370" y="0" width="185" height="30" uuid="48041fd6-1375-4819-8ebb-ffd4aef84889"/>
                <textFieldExpression><![CDATA[$F{TOTAL}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

输出结果

The result via preview in Studio