BIRT, как узнать длину параметра отчета? - PullRequest
1 голос
/ 13 февраля 2012

Я пытался создать параметр отчета в виде списка со включенным множественным выбором.Я пытаюсь отфильтровать свой отчет на основе этого параметра.Я написал код, похожий на этот, но он не работает;

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 выполняется только один раз.

Что может вызвать эту проблему?Как я могу отладить и решить это?

Любые идеи будут оценены.

1 Ответ

2 голосов
/ 13 февраля 2012

Ваш скрипт должен работать, по крайней мере, он работает в моей версии 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>

...