1

是否可以concat在表达式中使用sql的功能$X{}

($X{IN,(CONCAT(vtiger_usersAccounts.first_name,' ',vtiger_usersAccounts.last_name)),user)

我有错误,但我该怎么做呢?

4

2 回答 2

1

尝试在 $X 函数中使用分号(或管道)分隔符,然后它将被正确解析:

$X{IN;CONCAT(vtiger_usersAccounts.first_name,' ',vtiger_usersAccounts.last_name);user)

如果您在 iReport 中使用此功能,需要注意的另一件事是,每次更改 Gui 中的报告(假设您调整列的大小)时,sql 都会恢复为逗号分隔符,这似乎是 iReport 中的一个烦人的错误。

于 2013-01-29T16:48:46.087 回答
0

试试这个表达式:

SELECT CONCAT(vtiger_usersAccounts.first_name,' ',vtiger_usersAccounts.last_name) as name FROM table WHERE $X{IN, name, user}

HSQLDB的工作示例:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ..>
    <parameter name="cities" class="java.util.Collection">
        <defaultValueExpression><![CDATA[Arrays.asList("Dallas 2 Upland Pl.", "Chicago 202 College Av.")]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[SELECT id, CONCAT(city, CONCAT(' ', street)) as name FROM address WHERE $X{IN, name, cities}]]>
    </queryString>
    <field name="ID" class="java.lang.Integer"/>
    <field name="name" class="java.lang.String"/>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

注意:在此示例中,我使用了CONCAT(value1, CONCAT(' ', value2))表达式而不是您的表达式CONCAT(value1, ' ', value2)


您可以在查询示例帖子中找到有关使用$X{}语法的更多信息。

于 2012-10-18T13:36:18.883 回答