示例说明
在电子表格报表中切换一个参数,根据不同的参数值打开不同的报表。如下图所示,切换【B】参数,当值为1的时候显示电子表格1:
切换【B】参数,值为2的时候显示电子表格2:
设置方法
1、在“定制 -> 公共设置”中,创建【B】参数。
2、在“定制 -> 数据集定义”中,创建电子表格1、电子表格2对应的查询,要求所有查询都需要在where条件中添加"B参数"="B参数",如下图:
3、在电子表格设计器中使用上面查询分别创建电子表格对应的电子表格1、电子表格2。
4、切换到“定制 -> 宏管理”界面,新建一个资源包,类型选择电子表格,适用范围选择电子表格1和电子表格2。
5、双击此资源包进入报表宏界面。
6、在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为 spreadsheetReport;事件为 onParamValueChanged;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onParamValueChanged |
宏代码
function paramToString(v) { return v == null ? null: v.toString(); }; function main(spreadsheetReport, param) { if (param.name == "B") { //判断参数名称是否为"B" var destQuery = null; var paramsInfo = []; paramsInfo.push({ name: "B", value: paramToString(spreadsheetReport.getParamValue("B")), displayValue: paramToString(spreadsheetReport.getParamDisplayValue("B")) }); //获取参数B的值并传递给切换后的报表 var command = spreadsheetReport.command; command.close(); if (param.value == 2) { //如果参数B的值为2,则打开电子表格2 destQuery = 'I4028818a79455242014ffcfac8232056'; //电子表格2的ID } if (param.value == 1) { //如果参数B的值为1,则打开电子表格1 destQuery = 'I4028818a79455242014ffcfa93452052'; //电子表格1的ID } command.execute('OPENWITHNOREFRESH', destQuery); spreadsheetReport.autoRefresh = false; var report = command.spreadsheetReport; if (paramsInfo.length > 0) { report.setParamsInfo(paramsInfo); } report.doRefresh(); } };