页面树结构
转至元数据结尾
转至元数据起始

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如报表使用冻结,或多个宏代码冲突等),需根据实际需求开发代码。

示例说明

使用报表过程中,我们想动态修改一些数据内容,但这个内容本身也是动态的,需要从数据库中获取,此时我们可以通过宏代码执行sql,示例如下:

设置方法

1、创建报表。

2、在浏览器中,切换到“定制 -> 宏管理”页面,在左侧的资源树上找到对应报表,双击该节点进入报表宏编辑界面。

3、在报表宏界面新建客户端模块。在弹出的新建模块对话框中,选择需要的对象和事件,并参考本文最后的宏代码。


4、创建需要执行sql的数据源信息:


5、书写具体的宏代码,执行sql获取数据或保存数据。

宏代码

function main(..) {
    ...
    var newIdValue = getSqlResult();//在主函数中调用执行sql的方法
    ....
};
/**
 * 执行SQL语句,获取结果集
 */
function getSqlResult() {
    var util = jsloader.resolve("freequery.common.util");
    var ret = util.remoteInvoke("DataSourceService", "getDataByQuerySql", ["FoodmartCN", "select max(f_ContactID) + 1 as t from  contacts", 0, 1000]);
    if (ret.succeeded && ret.result) {
        var data = ret.result.data;//结果集数据,返回一个二维数组
        return data[0][0].value;
    }
};

宏代码中的 util.remoteInvoke是执行java方法并获取返回结果,接口方法说明如下;也可以执行其他java方法,接口说明参考 java api

关键对象总结


  • 无标签