javascript - BIRT报告可选参数脚本

标签 javascript sql report birt spagobi

我正在使用 SpagoBI,并且我正在尝试使用可选参数创建报告。我对 beforeOpen() 脚本有问题。这是查询。

select C."CUSTOMERNAME", C."CITY", D."YEAR", P."NAME"
from "CUSTOMER" C, "DAY" D, "PRODUCT" P, "TRANSACTIONS" T 
where C."CUSTOMERID" = T."CUSTOMERID"
and D."DAYID" = T."DAYID"
and P."PRODUCTID" = T."PRODUCTID"
and C."REGION" in (?)

和脚本

if (params["cityparam"].value != null){ 
  this.queryText = this.queryText + "and C.\"CITY\" in ( ?,'" +params["cityparam"].value + "')"; 
}
else{
  var str = reportContext.getParameterValue("regionparam");
  q3 = this.queryText + "and C.\"CITY\" in  (?,( select \"CUSTOMER\".\"CITY\" from \"CUSTOMER\" where \"CUSTOMER\".\"REGION\" in  ('"+ str +"')))";
  this.queryText =q3; 
}

我有 2 个参数,regionparam 和 cityparam,第二个是可选的。我试图以这种方式修改查询,当未设置 cityparam 时,我将 C."CITY"与所选区域中的所有可能值进行比较。生成的查询在我的 PGadmin 中有效。但SpagoBI studio存在问题。它说:

Subquery returned more than 1 value. This is not permitted

有BIRT大师吗?如果您有帮助,我将不胜感激。谢谢。

最佳答案

这是我用来处理 SpagoBI 中 BIRT 报告的可选参数的技术。通过重写查询,我们可以利用单个查询,而无需根据参数值修改它。

步骤

  1. 重写查询,以便可选参数可以为空或数据库字段等于某个值。对于每个可选参数,您将有两个“?”在查询中。第一个测试针对 null,第二个测试是测试值是否与字段匹配。对于必需的参数,您仍然只有一个“?”在查询中。

  2. 在 BIRT 数据集的参数中,对于可选参数,定义两个匹配的命名参数以对应第一个和第二个“?”在该参数的查询中。必需的参数将只有 1 个命名参数映射到它们。

以下是现有报告的简化示例。

示例 SQL 查询 (SQLServer),具有三个可选参数(用户状态、上次登录和 Angular 色)

SELECT
  ar.role_name,
  au.user_id,
  au.Lname, 
  au.FName, 
  au.Email, 
  au.Last_Login,      
  au.status,
  au.Creation_Date
FROM account_user au                          WITH (NOLOCK)
INNER JOIN account_role ar                    WITH (NOLOCK)
 ON ar.account_id = au.account_id 
 AND ar.role_id = au.role_id
WHERE au.account_id = 9999
 AND ( (? IS NULL) OR (AU.status = ?) ) 
 AND ( (? IS NULL) OR (AU.last_login <= ?) ) 
 AND ( (? is null) OR (ar.role_id = ?))
ORDER  BY role_name, Lname, Fname

以下是 BIRT 数据集参数的样子,其中包含三个可选参数。

enter image description here

关于javascript - BIRT报告可选参数脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38717056/

相关文章:

php - 如何根据ajax的结果执行不同的js操作?

javascript - Node.js - 使用多个查询异步构建 JSON

mysql - 查询不返回所有记录

mysql - 更正表中一对多、多对多的关系错误

javascript - Express multer 在 req.file 上返回 undefined

javascript - tensorflow js prediction 预测过程中的问题

mysql - mysql 错误1064

java - 倾城报告 : nothing shown in Chrome

reporting-services - 有没有办法在 SSRS 参数窗口中有一个重置按钮?

extjs - 如何保存 Extjs4 图表图像以在 pdf 报告中打印?