历史版本17 :导入Excel提交前清空数据库表 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本
10.0

1.2 预期效果

为了防止数据冗余,用户在导入 Excel 之前需要清空原表数据,确保清空完成后,再导入数据。预期效果视频如下所示:

[helpvideo]1310[/helpvideo]

1.3 实现思路

通过在填报页面设置中添加「Excel导入前」事件,设置在 Excel 导入前清空表数据,且添加回调函数判断清空表是否完成。

2. 示例编辑

2.1 准备数据

新建普通报表,添加数据库查询 ds1,SQL 语句: SELECT * FROM 产品

Snag_dfe6d61.png

2.2 设计表格

已知 Excel 表: 导入Excel前清空表.xlsx

在设计器中,按照 Excel 表设计表格,B3 单元格设置「单元格属性>扩展方向」为「纵向」,如下图所示:

1608168316612859.png

注:本例设计表格时未添加控件,只支持导入数据,无法修改,可自行添加。

2.3 设置填报属性

点击「模板>报表填报属性」,添加一个内置 SQL 提交,提交类型为「智能提交」,选择 FRDemo 中的「产品」表,智能添加所有字段,并添加对应单元格,勾选「产品ID」作为主键。步骤如下图所示:

1607492505634638.png

2.4 设置提交事件

1)点击「模板>模板 Web 属性>填报页面设置」,选择「为该模板单独设置」,设置工具栏工具为「提交」和「导入 Excel 」,添加 「Excel 导入前」事件:

1607494737563660.png

2)事件类型选择「提交入库」,提交类型选择「删除提交」,选择需要清空的数据表,通过添加字段添加主键「产品 ID」,值使用公式SQL("FRDemo","SELECT 产品ID FROM 产品",1)  查询出所有主键 ID 。

1607495040960990.png

3)设置回调函数

点击事件设置下方「设置回调函数」,输入 JavaScript 脚本,判断是否已经成功清空表,并弹出提示。

1607495375775117.png

 JavaScript 代码:

if(fr_submitinfo.success){  
     FR.Msg.toast('表清空成功!');  
}else{  
     FR.Msg.toast('表清空失败!');  
}

注1:success 只表示后台程序执行没有异常,不表示数据提交成功。

注2: 确认页面提示「表清空成功!」后再导入数据!

2.5 平台设置

点击「服务器>报表平台管理」进入数据决策系统,点击「管理系统>安全管理>安全防护」,关闭「脚本调用公式限制」。

1607495729355029.png

注:该限制默认开启,会导致回调函数不生效。

2.6 效果预览

保存报表,点击「填报预览」,效果如 1.2 节预期效果一致。

注:不支持移动端。

3. 模板下载编辑

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\demo\form\导入Excel前清空表.cpt

点击下载模板:导入Excel前清空表.cpt