在db2中使用以下查询:
select * from table where num in ('1a2334','1a43432','1a34243','1b34325','1b4545')
现在每当我收到要报告的数据时,我都会收到来自用户的行:
1a23344
1a43432
1a34243
1b34325
1b45454
然后我使用notepad ++将 rf 替换为',,使其变为
'1a2334','1a43432','1a34243','1b34325','1b4545'
我可以选择创建一个容易接受普通用户输入的报告吗?
此特定用户有一个包含多列的Excel工作表,我只使用第一列(上面提到的示例是第一列中的行)。
@Simulant提供了一个很好的解决方案,但我需要这个来从excel文件中获取值(最好是通过复制粘贴)。我注意到他/她的解决方案使用静态值,所以我认为我需要动态值。 为了记录,我使用脚本得到以下错误:
评估Javascript表达式时出错。脚本引擎错误: TypeError:无法调用null的方法“replace” (/报告/数据集/脚本数据集[@ ID = “12”] /方法[@名称= “beforeOpen”]#3) 脚本来源: /报告/数据集/脚本数据集[@ ID = “12”] /方法[@名称= “beforeOpen”], 行:0,文字: __bm_beforeOpen()。 (元素ID:1)Error.ScriptEvaluationError(1次(s))detail:org.eclipse.birt.report.engine.api.EngineException: 评估脚本“var parameters =时有错误 。PARAMS [ “multiSelectParameter”]值; var replacesPart =“'”+ parameters.join(“','”)+“'”; this.queryText = this.queryText.replace(“replaceMe”,replacecesPart);“:
答案 0 :(得分:2)
使用多选参数创建报告。创建列表框参数并允许多个值。您可以添加静态值或选择dynamic
并显示另一个查询的结果。
将您的查询编写为以下SQL-Statement:
select * from table where num in (replaceMe);
选择您的数据集,然后选择script
标签。输入beforeOpen
以下脚本。这会将SQL-Statement中的占位符replaceMe
替换为用单引号'
括起来的多选参数的多重值,并根据需要用逗号,
分隔:
var parameters = params["multiSelectParameter"].value;
var replacesPart = "'" + parameters.join("', '") + "'";
this.queryText = this.queryText.replace("replaceMe", replacesPart);