JS实现填报同时提交进不同表

目录:

1. 描述

填报报表时,当同一张表需要实现分别提交进不同数据库表时,需要在控件编辑结束事件里面写提交js,提交js又会触发控件编辑结束事件,造成死循环。此时可以用延时提交js+填报过滤来达到提交进不同表的目的。

2. 示例

2.1 数据库表准备

新建两张表dim_whtj_privset_ds(表1)和dim_whtj_test(表2),如下:
222

2.2 模板样式

新建数据库查询ds1:SELECT * FROM `dim_whtj_privset_ds`

ds2:SELECT * FROM `dim_whtj_test`

表样设计如下:
222

2.3 模板参数

点击模板>模板参数,添加参数A:

222

2.4 报表填报属性

分别给两个数据库表1和表2设置填报属性:

222

222

公式使得填入表2NAME1字段的值为表1中B1所在单元格的值。

2.5 控件设置

D1单元格的按钮控件,按钮类型为插入行,设置如下,:
222

E1单元格的按钮控件,按钮名称为点击插入数据,添加点击事件,达到点击按钮实现两次提交入库的功能:
222

setTimeout(function() { //校验并提交报表 contentPane.verifyAndWriteReport(); //获取控件所在单元格列号 var cr=FR.cellStr2ColumnRow(this.options.location); cr.col=cr.col-4; //根据单元格获取控件 var loc=FR.columnRow2CellStr(cr); //获取单元格控件的值 var A=contentPane.getWidgetByCell(loc).getValue(); //执行SQL var sql ="SQL(\"JDBC2\",\"Select NAME1_CODE from `dim_whtj_test` WHERE NAME1='"+A+"'\",1,1)"; //获取对应的值 alert(sql) var Count=FR.remoteEvaluate(sql); alert(Count) //给单元格赋值 contentPane.setCellValue(COL,ROW,Count); contentPane.verifyAndWriteReport(); },100)

3. 保存与预览

通过填报属性和按钮的设置,使得数据填入表1的同时,单元格D2所对应的B1的值同时提交入表2。

效果如下,点击按钮即可提交入库:
222

查看表1和表2,可以看到数据已入库:
222

附件列表


主题: 二次开发
标签: 已验证

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(微信ID:frbiaoge)