2012-02-13 12 views
1

私は複数選択肢を有効にしたリストボックスレポートパラメータを作成しようとしています。このパラメータに基づいてレポートをフィルタリングしようとしています。私はこのようなコードを書いていますが、動作していません。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を返します。

この問題の原因は何ですか?どうすればデバッグして解決できますか?

アイデアをお寄せいただきありがとうございます。

+0

何http://stackoverflow.com/questions/3402148/how-についてbirt-in-a-birt-report-of-a-birt- –

+0

私は別の質問があります。私は既に複数の値を使用してリストボックスのパラメータを有効にして、それを私のSQLクエリにバインドします。私の質問は、選択した値のカウントを取得している、私は前に言ったように、私はリストから5-6値を選択した場合でも常に1を返します。 –

+0

このコードはどのイベントスクリプトにありますか?それは違いを生むかもしれません。 –

答えて

2

スクリプトは動作するはずです。少なくとも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>

+0

ありがとう私はこれを見ます –

+0

見知らぬ事;私のコードは私のコンピュータ上で実行すると動作しますが、もし私がサーバに送ると動作しません。だから、問題を引き起こすサーバー上のbirtエンジンに問題があり、 "reportContext.getParameterValue(" filterIP ")"関数が期待どおりに動作していないと思います。 :/ –

関連する問題