java - BIRT,如何获取报告参数的长度?

标签 java reporting birt

我一直在尝试制作一个启用多项选择的列表框报告参数。我正在尝试根据此参数过滤我的报告。我写了一个类似这样的代码,但它不起作用;

importPackage(Packages.java.util.logging);
var fileHandler = new FileHandler("/tmp/birt.log", true);
var rootLogger = Logger.getLogger("");
rootLogger.addHandler(fileHandler);

var queryString = "";
queryString = "select * from public.r_"+params["rid"]+"_0 where (r_date_1 >= '"+params["startdate"]+"' and r_date_2 <'"+params["enddate"]+"')";
queryString += " and (r_vchar_3=";

filterIPLength = reportContext.getParameterValue("filterIP").length;
Logger.getAnonymousLogger().info("Parameter Count: "+filterIPLength);


for(i = 0; i<filterIPLength; i++) {
    queryString  += "'"+reportContext.getParameterValue("filterIP")[i]+"'";

    if (i != filterIPLength - 1) {
        queryString += "or r_vchar_3=";
    }
}

queryString += ")";
this.queryText = queryString;

这里的问题是,reportContext.getParameterValue("filterIP").length;行始终返回1,即使我选择了多个参数并且报告仅显示自for循环运行以来的第一个选定数据只有一次。

什么可能导致这个问题?我该如何调试和解决它?

任何想法将不胜感激。

最佳答案

您的脚本应该可以工作,至少可以在我的 BIRT 版本(2.6、Eclipse 3.6、Win-32)中工作。我写了一个小的简约报告(有效)来追踪问题,也许它可以帮助您调试。:

<?xml version="1.0" encoding="UTF-8"?> <report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.22" id="1"> <property name="createdBy">Eclipse BIRT Designer Version 2.6.1.v20100902 Build &lt;2.6.1.v20100915-1750></property> <property name="units">in</property> <property name="iconFile">/templates/blank_report.gif</property> <property name="bidiLayoutOrientation">ltr</property> <property name="imageDPI">120</property> <parameters> <scalar-parameter name="NewParameter" id="7"> <property name="valueType">static</property> <property name="dataType">string</property> <property name="distinct">true</property> <list-property name="selectionList"> <structure> <property name="value">123</property> <property name="label">test</property> </structure> <structure> <property name="value">124</property> <property name="label">test2</property> </structure> </list-property> <property name="paramType">multi-value</property> <property name="controlType">list-box</property> <property name="mustMatch">true</property> <property name="fixedOrder">true</property> <structure name="format"> <property name="category">Unformatted</property> </structure> </scalar-parameter> </parameters> <data-sources> <script-data-source name="Data Source" id="95"> <method name="beforeOpen"><![CDATA[paramLength = reportContext.getParameterValue("NewParameter").length;]]></method> </script-data-source> </data-sources> <data-sets> <script-data-set name="Data Set" id="96"> <list-property name="resultSetHints"> <structure> <property name="position">0</property> <property name="name">test</property> <property name="dataType">string</property> </structure> </list-property> <list-property name="columnHints"> <structure> <property name="columnName">test</property> </structure> </list-property> <structure name="cachedMetaData"> <list-property name="resultSet"> <structure> <property name="position">1</property> <property name="name">test</property> <property name="dataType">string</property> </structure> </list-property> </structure> <property name="dataSource">Data Source</property> </script-data-set> </data-sets> <styles> <style name="report" id="4"> <property name="fontFamily">sans-serif</property> <property name="fontSize">10pt</property> </style> <style name="crosstab-cell" id="5"> <property name="borderBottomColor">#CCCCCC</property> <property name="borderBottomStyle">solid</property> <property name="borderBottomWidth">1pt</property> <property name="borderLeftColor">#CCCCCC</property> <property name="borderLeftStyle">solid</property> <property name="borderLeftWidth">1pt</property> <property name="borderRightColor">#CCCCCC</property> <property name="borderRightStyle">solid</property> <property name="borderRightWidth">1pt</property> <property name="borderTopColor">#CCCCCC</property> <property name="borderTopStyle">solid</property> <property name="borderTopWidth">1pt</property> </style> <style name="crosstab" id="6"> <property name="borderBottomColor">#CCCCCC</property> <property name="borderBottomStyle">solid</property> <property name="borderBottomWidth">1pt</property> <property name="borderLeftColor">#CCCCCC</property> <property name="borderLeftStyle">solid</property> <property name="borderLeftWidth">1pt</property> <property name="borderRightColor">#CCCCCC</property> <property name="borderRightStyle">solid</property> <property name="borderRightWidth">1pt</property> <property name="borderTopColor">#CCCCCC</property> <property name="borderTopStyle">solid</property> <property name="borderTopWidth">1pt</property> </style> </styles> <page-setup> <simple-master-page name="Simple MasterPage" id="2"> <page-footer> <text id="3"> <property name="contentType">html</property> <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property> </text> </page-footer> </simple-master-page> </page-setup> <body> <data id="107"> <property name="whiteSpace">nowrap</property> <property name="dataSet">Data Set</property> <list-property name="boundDataColumns"> <structure> <property name="name">test</property> <text-property name="displayName">test</text-property> <expression name="expression" type="javascript">dataSetRow["test"]</expression> <property name="dataType">string</property> </structure> </list-property> <property name="resultSetColumn">test</property> </data> <text-data id="93"> <expression name="valueExpr">"Param length is " + paramLength</expression> <property name="contentType">html</property> </text-data> </body> </report>

关于java - BIRT,如何获取报告参数的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9260620/

相关文章:

java - Mongo Java 驱动程序 ObjectId.getCounter() 已弃用

java - 不使用 DecimalFormat 将 double 舍入到小数点后两位

wpf - 从 WPF 打印/报告的最佳方法是什么?

xml - 带有 XML 的 Excel 电子表格

parameters - BIRT 组合框动态默认值

linux - PDF 中所需的 Arial 字体(BIRT pdf 渲染器,Linux)

java - Java中的数据结构,支持快速搜索和删除数组中的重复项

JavaFX - TableCell 中带有添加数据按钮的单选按钮

c# - 带有 xml、xsl 和 css 的 asp.net 简单报告框架

width - BIRT:调整单元格宽度时如何自动调整最后一列的宽度