【发布时间】:2012-02-13 12:35:48
【问题描述】:
我一直在尝试制作启用多项选择的列表框报告参数。我正在尝试根据此参数过滤我的报告。我写了一个类似这样的代码,但它不起作用;
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 循环只运行一次。
什么可能导致这个问题?我该如何调试和解决它?
任何想法都会受到赞赏。
【问题讨论】:
-
我有不同的问题。我已经使用了启用多个值的列表框参数,并将其绑定到我的 sql 查询。我的问题是获取所选值的计数,即使我从列表中选择 5-6 个值,它也总是返回 1,正如我之前所说的。
-
这段代码在哪个事件脚本中?它可能会有所作为。
-
嗨,马克,它在我的数据集的 BeforeOpen 事件中。