BIRT使用脚本接收参数,并设置参数字符编码

最近刚接触到birt报表开发,整理了下使用脚本拼接参数的问题。如果需要使用脚本拼接参数,在报表设计中选中自己所建的数据集,然后点击脚本,选择beforeOpen添加脚本。

var sqlWhere = " where 1=1 "; //拼装where
var sqlGroup = " group by  ";//拼装 group
var sqlOrder = " order by  ";// 拼装 order
//接收页面传过来的参数
var type_code = decodeURI(params["type_code"].value); //存款类型
var bank = decodeURI(params["bank"].value); //开始日期
var detial_type= decodeURI(params["detial_type"].value); //类型细分
//参数的拼接
//存款产品
if(type_code == "yes"){//全选
   sqlGroup = sqlGroup + "SAVING_DEPOSIT,SAVING_NAME, ";
   sqlOrder = sqlOrder + "SAVING_DEPOSIT,";
}else if(type_code == "no"){//不显示数据列
   sqlGroup = sqlGroup + "SAVING_DEPOSIT,SAVING_NAME, ";
}else {//选择那个显示那个
   sqlWhere = sqlWhere + "AND SAVING_DEPOSIT  in " + type_code;
   sqlGroup = sqlGroup + "SAVING_DEPOSIT,SAVING_NAME, ";
   sqlOrder = sqlOrder + "SAVING_DEPOSIT, ";
}
//银行
if(bank == "yes"){//全选
   sqlGroup = sqlGroup + "BANK_CODE,BANK_NAME, ";
   sqlOrder = sqlOrder + "BANK_CODE,";
}else if(bank == "no"){//不显示数据列
   sqlGroup = sqlGroup + "BANK_CODE,BANK_NAME, ";
}else {//选择那个显示那个
   sqlWhere = sqlWhere + "AND BANK_CODE  in " + bank;
   sqlGroup = sqlGroup + "BANK_CODE,BANK_NAME, ";
   sqlOrder = sqlOrder + "BANK_CODE, ";
}
//类型细分
if(detial_type == "yes"){//全选
   sqlGroup = sqlGroup + "TYPE_CODE,TYPE_NAME, ";
   sqlOrder = sqlOrder + "TYPE_CODE,";
}else if(detial_type == "no"){//不显示数据列
   sqlGroup = sqlGroup + "TYPE_CODE,TYPE_NAME, ";
}else {//选择那个显示那个
   sqlWhere = sqlWhere + "AND TYPE_CODE  in " + detial_type;
   sqlGroup = sqlGroup + "TYPE_CODE,TYPE_NAME, ";
   sqlOrder = sqlOrder + "TYPE_CODE, ";
}
//如果什么都没有选择可以要把其他的列拼装上
   sqlGroup = sqlGroup + "ACCOUNT";
   sqlOrder = sqlOrder + "ACCOUNT";
//执行SQL
this.queryText = this.queryText + sqlWhere + sqlGroup + sqlOrder;


//打印 可以将SQL语句打印在控制台,便于检查和调试
java.lang.System.out.println(TYPE+"-----"+CLTNO +"------"+this.queryText+"-----");

    如果参数接受过来是汉字,并且在上述脚本中打印也是汉字,但是在页面显示是乱码。可以在birt报表--布局--点击空白处---点击脚本---脚本处选择 initialize 添加以下脚本设置编码

//参数乱码  标题参数
params["title"] = java.net.URLDecoder.decode(params["title"],"UTF-8");

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值