更新属性
更新属性
更新属性是指表单填报数据提交至服务器后的进一步更新存储方式,如:填报数据更新至数据库表、字段的属性。
使用【增加】按钮,可以新增一个更新属性。对于已有的更新属性,也可以进行重新定义名称、删除、上移、下移等操作。
可为填报表设置多个更新属性,所以一张填报表中的数据,能够以多种方式进行更新。
更新方式
更新方式包括:“更新数据库表”、“用储存过程更新”、“用自定义类更新”。根据选择的更新方式的不同,更新设置的内容会发生不同的变化,常用的更新方式是“更新数据库表”。
- 更新数据库表:直接对数据表进行更新、插入或删除操作。在设置过程中需要在更新字段列表中定义字段名与报表单元格的对应关系,同时每个更新数据库属性必须指定主键。对数据进行更新时数据库执行update语句,插入新数据时执行insert语句,删除数据行时执行delete语句。
- 存储过程更新:系统调用存储过程更新,更新时调用存储过程所传入的问号参数与对应的取值表达式中,如果此问号要求取单元格的填报值进行表达式计算,那么应写成:=inputVaule(单元格名),如果直接写单元格名表示取单元格的原始值。
- 自定义类更新:由用户写java类完成对数据的更新。
更新数据表
要更新的数据表需要先通过数据管理进行登记,登记后的数据表才能被选择具体参见:数据表登记。数据表更新设置,需要依次选择数据源、模式、更新表名、更新格,通过更新字段列表右侧的【增加】或【批量增加】按钮,设置更新字段和该字段对应的更新表达式。更新属性具体设置如图:
系统提供多种提交类型,默认使用智能提交方式,具体的介绍可参见文档下方的“提交类型”小节。
对于行数填报表,默认情况下只更新编辑过的行数据,如果需要将未修改的行一起更新,需要勾选“是否更新未修改行”
注意:
1.更新值的表达式必须以等号开头。
2.更新字段列表中的“参数”这个属性一般情况可以为默认,但当主键为自动增长时,参数类型必须设置为自动增长。
3.系统会自动将更新值处设置的单元格的可写属性,设置为可写。
存储过程更新
用存储过程更新:系统调用存储过程完成更新,更新属性的问号与对应的取值表达式中,如果此问号要求取单元格的填报值进行表达式计算,那么应写成: =inputValue(单元格名) 的形式,如果直接写单元格名,表示是取单元格填报前的原始值。
例如oracles数据库中新建存储过程如下:
create or replace procedure class_set_in
(v_o_id varchar2,
v_class NVARCHAR2,
v_t_code nvarchar2,
v_note nvarchar2,
v_c nvarchar2
)is
begin
if v_c ='TRUE' THEN
INSERT INTO CLASS_TYPE_SET_ON SELECT to_number(v_o_id),v_class,to_number(v_t_code),v_note from dual;
else
INSERT INTO CLASS_TYPE_SET_OFF SELECT to_number(v_o_id),v_class,to_number(v_t_code),v_note from dual;
END IF;
end class_set_in;
上述存储过程根据参数v_c的取值判断将传进来的其它数据存储到哪张业务表中。
注意:数据库中需要有对应的业务表CLASS_TYPE_SET_ON 和 CLASS_TYPE_SET_OFF。
设置更新属性时如截图:
自定义类更新
用自定义类更新:由用户写自定义Java类来完成对数据的更新。
提交类型
对于数据库表更新,存在四种提交类型(存储过程更新和自定义更新无此属性),每条更新属性可以设置不同的提交类型
1.智能提交:根据主键 insert/update,若为行式报表则还能delete,默认为此方式(报表组暂时只支持智能提交)
2.删除提交:根据主键 delete(删除页面上显示的数据,与智能提交的删除不同,智能提交是delete页面上少掉的数据)
3.插入提交:根据主键 insert页面上所有数据
4.更新提交:根据主键,执行update页面上修改的数据或delete页面上少掉的数据,不能插入数据