【发布时间】:2016-02-22 14:10:24
【问题描述】:
我有一个报告,我正在尝试使用参数添加一个过滤器,该过滤器允许用户选择Part Number,然后显示项目所在的位置,由Location 过滤。
问题在于,无论出于何种原因——即使我将 LocationGroupID 设置为 LocationGroupID,它也无法工作或更新。
这里有一些截图。
我正在使用 iReport 和 Fishbowl
<parameter name="path" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["C:/Program Files/Fishbowl/Server/reports/WorkOrder/"]]></defaultValueExpression>
</parameter>
<parameter name="module" class="java.lang.Object" isForPrompting="false">
<defaultValueExpression><![CDATA[null]]></defaultValueExpression>
</parameter>
<parameter name="REPORTDESCRIPTION" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["Generates a summary of the quantity and value of all parts currently on hand. This is a LIFO/FIFO based report."]]> </defaultValueExpression>
</parameter>
<parameter name="partNum" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="locationGroupID" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="AssetAccount" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["%"]]></defaultValueExpression>
</parameter>
<parameter name="dateRange1" class="java.util.Date" isForPrompting="false">
<parameterDescription><![CDATA[This Month]]></parameterDescription>
<defaultValueExpression><![CDATA[new Date()]]></defaultValueExpression>
</parameter>
<parameter name="dateRange2" class="java.util.Date" isForPrompting="false">
<defaultValueExpression><![CDATA[new Date()]]></defaultValueExpression>
</parameter>
<parameter name="ckShowActiveCostingLayers" class="java.lang.String" isForPrompting="false">
<parameterDescription><![CDATA[10,100]]></parameterDescription>
<defaultValueExpression><![CDATA["10"]]></defaultValueExpression>
</parameter>
<parameter name="ckShowFulfilledCostingLayers" class="java.lang.String" isForPrompting="false">
<parameterDescription><![CDATA[20,100]]></parameterDescription>
<defaultValueExpression><![CDATA["100"]]></defaultValueExpression>
</parameter>
<parameter name="ckShowVoidedCostingLayers" class="java.lang.String" isForPrompting="false">
<parameterDescription><![CDATA[30,100]]></parameterDescription>
<defaultValueExpression><![CDATA["100"]]></defaultValueExpression>
</parameter>
<parameter name="ShowHistoricalData" class="java.lang.Boolean" isForPrompting="false">
<defaultValueExpression><![CDATA[new Boolean(false)]]> </defaultValueExpression>
</parameter>
<queryString>
</queryString>
<field name="QTY" class="java.lang.Double"/>
<field name="ORGQTY" class="java.lang.Double"/>
<field name="ORGTOTALCOST" class="java.lang.Double"/>
<field name="TOTALCOST" class="java.lang.Double"/>
<field name="DATECREATED" class="java.sql.Timestamp"/>
<field name="PARTNUMBER" class="java.lang.String"/>
<field name="PARTDESCRIPTION" class="java.lang.String"/>
<field name="InventoryAccount" class="java.lang.String"/>
<field name="LOCATIONGROUP_ID" class="java.lang.Integer"/>
<field name="COMPANY" class="java.lang.String"/>
<variable name="AssetValue" class="java.lang.Double">
<variableExpression><![CDATA[$P{ShowHistoricalData}.booleanValue() == true ?
$F{ORGTOTALCOST} :
$F{TOTALCOST}]]></variableExpression>
</variable>
<variable name="TotalAsset" class="java.lang.Double" resetType="Group" resetGroup="Part" calculation="Sum">
<variableExpression><![CDATA[$V{AssetValue}]]></variableExpression>
</variable>
<variable name="ReportTotal" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$V{AssetValue}]]></variableExpression>
</variable>
<variable name="locationTotal" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$V{AssetValue}]]></variableExpression>
</variable>
<variable name="TotalCost" class="java.lang.Double" resetType="Group" resetGroup="Part" calculation="Sum">
<variableExpression><![CDATA[$V{UnitCost}]]></variableExpression>
</variable>
<variable name="GrandTotalAsset" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$V{AssetValue}]]></variableExpression>
</variable>
<variable name="GrandTotalCost" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$V{TotalCost}]]></variableExpression>
</variable>
<variable name="UnitCost" class="java.lang.Double">
<variableExpression><![CDATA[$P{ShowHistoricalData}.booleanValue() == true ?
new Double($F{ORGTOTALCOST}.doubleValue() / $F{ORGQTY}.doubleValue()) :
new Double($F{TOTALCOST}.doubleValue() / $F{QTY}.doubleValue())]]> </variableExpression>
</variable>
<variable name="DateFormat" class="java.lang.String" resetType="None">
<variableExpression><! [CDATA[(System.getProperty("REPORT_DATE_FORMAT"))]]></variableExpression>
</variable>
【问题讨论】:
-
参数的值传了吗?
-
您是否使用Java代码来调用报告?
-
您应该显示将参数值传递给报告的代码
-
尽量减少你发布到相关xml的jrxml,删除文本格式,不感兴趣的字段(我们需要看到你的param def等)创建一个minimal reproducible example
-
注意参数类需要对应于列类型,我会尝试调试我的查询,首先进行非常简单(只有一个参数)的查询,然后从那里开始工作......
标签: sql jasper-reports