扩展Jaspersoft Studio查询的Integer字段中的最大字符长度

时间:2019-02-15 16:57:16

标签: jasper-reports

我有一个报告,当前在Jaspersoft Studio中使用整数。我需要在每个字段中输入13个字符,然后对其进行迭代。不幸的是,该字段一次只允许输入10个字符。我试图将字段更改为字符串输入,但是对这些输入字段的调用很多,需要将其强制转换为整数,如果能够更改最大值,对我来说似乎容易得多该字段中的允许字符为13。

如果愿意,我愿意将每个输入的字符串都强制转换为int,但是我对Jaspersoft还是很陌生,到目前为止,我所做的每一次尝试都失败了。这是我的查询内容:

select lpad(num::text, 13, '0') value1
, num::text value1no0s
, lpad((num+ ($P{RangeEnd}-$P{RangeStart})/3)::text, 13, 
'0') value2
, (num+ ($P{RangeEnd}-$P{RangeStart})/3)::text value2no0s
, lpad(( num+ 2*($P{RangeEnd}-$P{RangeStart})/3)::text, 
13, 
'0') value3
, ( num+ 2*($P{RangeEnd}-$P{RangeStart})/3)::text value3no0s

from generate_series($P{RangeStart},($P{RangeEnd}-$P{RangeStart})/3 + $P{RangeStart} +1)  num

这是我的报告中典型表达的示例:

IF(INTEGER_VALUE($F{value3}) > $P{RangeEnd}, null,IF(INTEGER_VALUE($F{value1}) >= (($P{RangeEnd}-$P{RangeStart})/3+$P{RangeStart}), null, $P{SaleName}))

请告知我是否可以提供更多信息。谢谢!

1 个答案:

答案 0 :(得分:0)

应该进行此操作,因为您的数字(13个字符)位于2147483647的{​​{3}}上方,因此您需要将参数定义为{{3} }

JasperSoft Studio的开发人员实际上是在尝试通过限制MAX_VALUE

以下的数字来为您提供帮助

示例

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="Blank_A4_7" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3c26b137-f63b-46c8-8469-de9f24f291f3">
    <parameter name="Parameter1" class="java.lang.Long"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <title>
        <band height="79" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="270" height="30" uuid="41fd4d98-bd1e-48c9-ac8c-d8cfae208a5d"/>
                <textFieldExpression><![CDATA[$P{Parameter1}]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

输出

Integer.MAX_VALUE