当前位置: 首页 > 知识库问答 >
问题:

iReport计算表达式时出错

闻慎之
2023-03-14

我们正在使用iReport 5.0.1,并且已经成功地转换了我们的许多水晶报告包。

我正在处理整数和双精度数据类型的混合数据,并且我正在详细信息部分的变量字段中执行计算。

然后,我有3个变量对详细数据求和。第一个变量是上面的细节变量的直接和。第二个根据IF..THEN.ELSE语句添加一个参数或第二个参数,第三个根据类似的IF..THEN.ELSE语句减去相同的参数值。

我需要舍入组页脚中的3个变量字段,所以我将Math.round(variable_name)应用于3个变量中的每一个。原始变量和最后一个变量(减去参数)都非常完美。中间的变量(添加参数)抛出一个错误,“错误计算表达式:Math.round(variable_name)”。如果我去掉格式,它运行良好。

我已经复制并粘贴了工作变量,将其重命名为正确的名称,以确保我不会以最初设置它们的方式丢失某些内容,但无济于事。当我使用空数据源运行它时,它会运行,但当然没有数据。

这将使我相信数据有问题,但我已经检查过了,数据对数据源都是有效的,没有NULL、空白或字符数据。

我在这一点上很为难。该报告在CrystalReports中编译和运行得很好,使用的函数非常接近。

如果有人有任何建议,我很乐意倾听,我将在下面发布报告的XML。

提前感谢您能提供的任何帮助。

M. 斯奈德

    <?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="MarginRequirement"         language="groovy" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20"         rightMargin="20" topMargin="20" bottomMargin="20" uuid="70f7c2ab-dba2-420a-98b9-        dc041beb65a7">
        <property name="ireport.zoom" value="1.0"/>
        <property name="ireport.x" value="0"/>
        <property name="ireport.y" value="0"/>
        <property name="ireport.jasperserver.reportUnit"         value="/reports/Risk_Management/MarginRequirement"/>
        <property name="ireport.jasperserver.url"         value="http://reports.beefnw.com/jasperserver/services/repository"/>
<parameter name="LCF" class="java.lang.Float">
    <defaultValueExpression><![CDATA[0.0]]></defaultValueExpression>
</parameter>
<parameter name="LCO" class="java.lang.Float">
    <defaultValueExpression><![CDATA[0.0]]></defaultValueExpression>
</parameter>
<parameter name="FCF" class="java.lang.Float">
    <defaultValueExpression><![CDATA[0.00]]></defaultValueExpression>
</parameter>
<parameter name="FCO" class="java.lang.Float">
    <defaultValueExpression><![CDATA[0.0]]></defaultValueExpression>
</parameter>
<parameter name="GF" class="java.lang.Float">
    <defaultValueExpression><![CDATA[0.0]]></defaultValueExpression>
</parameter>
<parameter name="GO" class="java.lang.Float">
    <defaultValueExpression><![CDATA[0.0]]></defaultValueExpression>
</parameter>
<queryString>
    <![CDATA[select *,
    if (mid(symbol,-3,1) in("F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"),         "Future", "Option") AS type from margin_requirements
    order by location, clearing_house
    ]]>
</queryString>
<field name="open_price" class="java.lang.Float">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="equity" class="java.lang.Float">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="close_price" class="java.lang.Float">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="open_total_value" class="java.lang.Float">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="close_total_value" class="java.lang.Float">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="liquidating_value" class="java.lang.Float">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="commission" class="java.lang.Float">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="account_id" class="java.lang.Integer">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="position_id" class="java.lang.Integer">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="id" class="java.lang.Integer">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="contract_weight" class="java.lang.Integer">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="contracts" class="java.lang.Integer">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="account_name" class="java.lang.String">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="account_number" class="java.lang.String">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="location" class="java.lang.String">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="clearing_house" class="java.lang.String">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="type" class="java.lang.String"/>
<field name="group" class="java.lang.String">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="symbol" class="java.lang.String">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="fill_date" class="java.sql.Date">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="updated_at" class="java.sql.Timestamp">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="created_at" class="java.sql.Timestamp">
    <fieldDescription><![CDATA[]]></fieldDescription>
</field>
<variable name="loc_clHouse" class="java.lang.String" resetType="None">
    <variableExpression><![CDATA[$F{location} + " - " + $F{clearing_house}]]></variableExpression>
</variable>
<variable name="LC_Orig" class="java.lang.Float" resetType="None">
    <variableExpression><![CDATA[$F{group}=="LIVE_CATTLE"?((($F{contracts}*$F{contract_weight}*$F{open_price})/100)*-1) + (($F{contracts}*$F{contract_weight}*$F{close_price})/100):0.0]]></variableExpression>
</variable>
<variable name="LCOrig_Total" class="java.lang.Float" resetType="Group" resetGroup="ClearingHouse" calculation="Sum">
    <variableExpression><![CDATA[Math.round($V{LC_Orig})]]></variableExpression>
</variable>
<variable name="Suppression" class="java.lang.String" resetType="None">
    <variableExpression><![CDATA["NO"]]></variableExpression>
</variable>
<variable name="LCUpPrice" class="java.lang.Float" resetType="None">
    <variableExpression><![CDATA[$F{type}=="Future"?$F{close_price}+$P{LCF}:$F{close_price}+$P{LCO}]]></variableExpression>
</variable>
<variable name="LCDownPrice" class="java.lang.Float" resetType="None">
    <variableExpression><![CDATA[$F{type}=="Future"?$F{close_price}-$P{LCF}:$P{LCO} > $F{close_price}?0.0:$F{close_price}-$P{LCO}]]></variableExpression>
</variable>
<variable name="LC_Decrease" class="java.lang.Float" resetType="None">
    <variableExpression><![CDATA[$F{group}=="LIVE_CATTLE"?((($F{contracts}*$F{contract_weight}*$F{open_price})/100)*-1)+(($F{contracts}*$F{contract_weight}*$V{LCDownPrice})/100):0.0]]></variableExpression>
</variable>
<variable name="LCDecr_Total" class="java.lang.Float" resetType="Group" resetGroup="ClearingHouse" calculation="Sum">
    <variableExpression><![CDATA[Math.round($V{LC_Decrease})]]></variableExpression>
</variable>
<variable name="LCIncr_Total" class="java.lang.Float" resetType="Group" resetGroup="ClearingHouse" calculation="Sum">
    <variableExpression><![CDATA[Math.round($V{LC_Increase})]]></variableExpression>
</variable>
<variable name="LC_Increase" class="java.lang.Float" resetType="None">
    <variableExpression><![CDATA[$F{group}=="LIVE_CATTLE"?((($F{contracts}*$F{contract_weight}*$F{open_price})/100)*-1)+(($F{contracts}*$F{contract_weight}*$V{LCUpPrice})/100):0.0]]></variableExpression>
</variable>
<group name="ClearingHouse">
    <groupExpression><![CDATA[$V{loc_clHouse}]]></groupExpression>
    <groupHeader>
        <band height="25">
            <printWhenExpression><![CDATA[$V{Suppression}=="YES"]]></printWhenExpression>
            <textField>
                <reportElement uuid="51b78c4d-3747-4282-8b9f-17be6f84feea" x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$V{loc_clHouse}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="ad970881-452b-42aa-bb9f-a19e735643c5" x="179" y="5" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$V{Suppression}]]></textFieldExpression>
            </textField>
        </band>
    </groupHeader>
    <groupFooter>
        <band height="116">
            <textField>
                <reportElement uuid="79587964-7211-4761-9221-0c063a1aebf0" x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$V{loc_clHouse}]]></textFieldExpression>
            </textField>
            <textField pattern="¤ #,##0.00">
                <reportElement uuid="3bd9ce71-5cf4-4ae3-b678-8f3942fc9e7a" x="100" y="0" width="100" height="20"/>
                <textElement textAlignment="Right"/>
                <textFieldExpression><![CDATA[$V{LCOrig_Total}]]></textFieldExpression>
            </textField>
            <textField pattern="¤ #,##0.00">
                <reportElement uuid="20ef4729-88b0-4ab2-a5a6-56594bb716d5" x="100" y="40" width="100" height="20"/>
                <textElement textAlignment="Right"/>
                <textFieldExpression><![CDATA[$V{LCDecr_Total}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="16a8b6f9-5e24-4ee6-9e84-e2730d78dea1" x="100" y="20" width="100" height="20"/>
                <textElement textAlignment="Right"/>
                <textFieldExpression><![CDATA[$V{LCIncr_Total}]]></textFieldExpression>
            </textField>
        </band>
    </groupFooter>
</group>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band height="79" splitType="Stretch"/>
</title>
<pageHeader>
    <band height="142" splitType="Stretch">
        <image>
            <reportElement uuid="eef5e5ab-7b5d-4f86-a20f-5dd51bbd56bd" x="5" y="4" width="310" height="93"/>
            <imageExpression><![CDATA["/home/marlin/bnw_logo_trans.gif"]]></imageExpression>
        </image>
        <rectangle>
            <reportElement uuid="957ac037-7238-46e1-809c-4ded5f76b72b" x="0" y="102" width="572" height="38" forecolor="#E6D8AB" backcolor="#E6D8AB"/>
        </rectangle>
        <staticText>
            <reportElement uuid="3b2925af-f556-4c0c-84bb-e5b5b021128e" x="126" y="110" width="341" height="30"/>
            <textElement textAlignment="Center">
                <font size="18" isBold="true"/>
            </textElement>
            <text><![CDATA[MARGIN REQUIREMENT REPORT]]></text>
        </staticText>
    </band>
</pageHeader>
<columnHeader>
    <band height="27" splitType="Stretch">
        <rectangle>
            <reportElement uuid="a2f2bf6a-6f14-48e5-9d19-5f153caed5a5" x="0" y="0" width="572" height="27" forecolor="#E6D8AB" backcolor="#E6D8AB"/>
        </rectangle>
    </band>
</columnHeader>
<detail>
    <band height="96" splitType="Stretch">
        <printWhenExpression><![CDATA[$V{Suppression}=="NO"]]></printWhenExpression>
        <textField>
            <reportElement uuid="ed06c6f7-7b44-4033-8c4a-9364d9c22e13" x="100" y="0" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$V{LC_Orig}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement uuid="55b4791f-dfe7-415c-89d5-ebd937c6a329" x="0" y="0" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$V{Suppression}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement uuid="aba93e69-1ab0-476a-81e0-c65d8f482233" x="100" y="40" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$V{LC_Decrease}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement uuid="6f9026a6-abf5-4017-974c-9e972bed8181" x="0" y="20" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$P{LCF}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement uuid="ff53c29d-4006-4b99-8b77-295717483c79" x="0" y="40" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$P{LCO}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement uuid="e305cdbe-e93c-47bb-aedd-f2fc1478e33d" x="100" y="20" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$V{LC_Increase}]]></textFieldExpression>
        </textField>
    </band>
</detail>
<columnFooter>
    <band splitType="Stretch"/>
</columnFooter>
<pageFooter>
    <band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
    <band height="42" splitType="Stretch"/>
</summary>
    </jasperReport>

共有1个答案

司立果
2023-03-14

感谢iReport/Jisper论坛提供的答案:

http://community.jaspersoft.com/questions/803533/ireport-error-evaluating-expression#comment-802119

M. 斯奈德

 类似资料:
  • 使用DevTools控制台的求值计算功能,探测页面上任何项的状态。 DevTools控制台允许您以特别的方式了解页面中项的状态。他可以计算JavaScript的任何表达式,控制台本身支持几个功能。 TL;DR 计算键入的表达式。 使用其中一个快捷方式选择元素。 使用 inspect()检查DOM元素和JavaScript对象。 使用$0 - 4访问最近选择的元素和对象。 操作表达式 在控制台中输入

  • 我试图在iReport中实现一个简单的表达式,但无论我尝试什么,似乎都给了我一个错误。这似乎是一件很简单的事情,但每当我尝试用Java做任何事情时,我都需要大约20次尝试才能把它做好。 我所要做的就是在整数字段的值不为零时显示子报告。我正在对子报告控件使用打印时表达式。 以下是我尝试过的许多事情中的一些: 显然我的Java很烂。任何帮助都将不胜感激。谢谢

  • 主要内容:示例在MS Access中,表达式就像Excel中的公式。 这包括一些可以单独使用或组合使用以产生结果的元素。 表达式可以包括运算符,常量,函数和标识符。 表达式可用于执行各种任务,从检索控件的值或将查询条件提供给查询来创建计算的控件和字段,或者为报表定义组级别。 在本章中,我们将着重于创建一个称为计算表达式的非常具体的表达式。创建几个计算的字段,这些字段将计算并显示不存储在数据库本身任何位置的数据,

  • 当我们想临时修攺某个变量的值或查看其内部方法返回值的时候,可以使用计算表达式功能. Android Studio中提供了一个计算表达式和代码片段的功能, 使用起来非常方便.它除了支持正则表达式计算以外,还支持操作表达式,匿名表达式和内部类的计算. 两种计算模式: Expression Mode: 计算单行表达式 Code Fragment Mode: 计算代码片段, 我们可以对声明、赋值、循环和i

  • Evaluates simple math expression like 2*4 or 10/2 and outputs its result. You can use \ operator which is equivalent to round(a/b). 计算简单的数学表达式,比如2*4 或 10/2,并输出结果。\ 操作符结果同 round(a/b)。 Very useful in CS

  • 我一直在一个Web项目中工作,客户端需要显示像ID卡一样的报告。我在Illustrator中设计了报告的结构并导出为SVG,因此BatikRender处理文件并在报告中显示。在iReport中只包括我要显示的字段。所以基本上它在iReport Designer 5.5.0中工作。 当我编译它并显示预览时。似乎一切都很好。 下面是我的jrxml: 我使用了绝对路径的另一种变体,它也可以工作: 问题是