<< Click to Display Table of Contents >> 填报参数组件填报脚本举例 |
不同于章节"填报参数组件填报"中的界面化设置"源字段"和"目标字段"之间的对应关系,为了满足客户的多样性的需求,填报参数组件还支持用纯脚本的方式实现数据填报,可以回填的数据库依然是:oracle、MySQL、DB2、SQLServer、PostgreSQL、Derby、Gbase、Hana
❖填报参数组件脚本填报
假如在 SQL 数据库中存在表 “stu”,那么用户可以在连接数据模块创建 SQL 数据库的数据集,例如:创建一个 SQL 数据集,名称为:"学生表",保存路径为:"test/sql数据库/学生表 " 。
数据库表的数据如下:
•拖拽右侧面板-组件上的填报参数组件 到仪表盘编辑区,在填报参数组件中绑定数据集"test/sql数据库/学生表 "中的数据,也可以根据实际情况进行设置,可以参考"填报参数组件基础功能"章节。
•在仪表盘右侧面板-组件中拖拽提交组件到仪表盘编辑区,设置按钮的"提交时允许"的脚本:
var conn = null;
try {
conn = createConnection(SQL, "test/sql 数据库 / 学生表 ");
/*
通过 SQL 查询创建数据库连接,其中 SQL 表示查询类型, "test/sql 数据库 / 学生表 " 表示查询的路径,也可以通过数据源创建数据库连接,也 conn = createConnection(CONNECTION, "test/ 数据源 /SQLSERVER_ 数据源 ")
*/
var fgrid = getData(" 填报参数 1"); // " 填报参数 1" 表示填报参数组件的名称
var rowsOld = fgrid.rows(ORIGINAL); // 无变化的数据行
var rowsAdded = fgrid.rows(ADDED); // 增加的数据行
var rowsChanged = fgrid.rows(MODIFIED); // 更改数据行
var rowsDeleted = fgrid.rows(DELETED); // 删除数据行
if(rowsAdded != null){
var pstmt = conn.prepareStatement("insert into stu (stuName, stuAge, stuSex) values (?,?,?)");
/*
将数据插入数据库中,其中 stu 是要插入数据库的表名,stuName, stuAge, stuSex 是表 stu 中的列,分别与后面的问号相对应
*/
for(var i = 0; i < rowsAdded.length; i++){
pstmt.setString (1, rowsAdded[i].stuName);
pstmt.setInt (2, rowsAdded[i].stuAge);
pstmt.setString (3, rowsAdded[i].stuSex);
pstmt.executeUpdate();
}
}
/*
遍历所有行并更新数据库 , stuName, stuAge, stuSex 是填报参数中的列名分别与 values 中的问号相对应, string, int 分别表示对应列的数据类型
*/
if(rowsDeleted != null) {
var pstmt = conn.prepareStatement("delete from stu where stuId=?");
// 删除某一行, stu 是数据库中表的名字, stuId 是表的主键
for(var i = 0; i < rowsDeleted.length; i++){
pstmt.setInt(1, rowsDeleted[i].stuId);
pstmt.executeUpdate();
}
}
/*
遍历所有行并更新数据库 , stuId 是表格 stu 的主键,与 where 条件中的问号对应, int 表示 stuId 的数据类型
*/
if(rowsChanged != null){
var pstmt = conn.prepareStatement("update stu set stuName=?, stuAge=?, stuSex=? where stuId=?");
/*
更新数据库中数据,其中 stu 是要更新数据库的表名, stuName, stuAge, stuSex 是表 stu 中的列, stuId 是表的主键
*/
for(var i = 0; i < rowsChanged.length; i++) {
pstmt.setString(1, rowsChanged[i].stuName);
pstmt.setInt(2, rowsChanged[i].stuAge);
pstmt.setString(3, rowsChanged[i].stuSex);
pstmt.setInt(4, rowsChanged[i].stuId);
pstmt.executeUpdate();
}
}
}
/*
遍历所有行并更新数据库 , stuName, stuAge, stuSex 是填报参数中的列名分别与上面语句中的问号相对应, string, int 分别表示对应列的数据类型
*/
catch(e){
try {
if(conn != null) {
conn.rollback();
}
}
catch(e1) {
}
debug("Update DataBase Error: " + e);
}
finally {
if(conn != null) {
try {
conn.commit();
fgrid.updateFlag();
conn.close();
}
catch(e2) {
}
}
}
•编辑完成后进入预览模式或者查看报告中查看报表,对填报参数组件中的数据进行增加、修改、删除后对点击提交按钮即可向数据库中提交数据。