1. 程式人生 > >BIRT使用指令碼接收引數,並設定引數字元編碼

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");