填报表更新属性问题
填报报表可以使得报表同数据库进行简单而快捷的交换,我们可以轻松地将要入库的数据录入到报表中,再提交到数据库。
在使用过程中,总会遇到一些问题,下面看填报更新属性的一个问题。
问题描述
如果想要在一张填报表中对一个表进行两次更新操作,即将两个人的信息插入到数据库对应的表中,这两个人的角色不同,在数据库中应该作为两条记录存在。
但是定义完两个类似的更新属性(如下图)后,


数据库中出现了一个人两条记录的情况,即一个人拥有两种角色,这显然是不正确的。
![]()
问题分析
报表引擎在填报表提交的时候会进行一个判断,如果数据库对应的物理表中没有与更新属性中定义的主键相同的记录,则进行insert操作;否则进行update操作。
但是一张填报表 提交的时候是作为一个整体进行的,也就是说,后面的更新操作不会检查前面更新操作的结果。如本例中虽然勾选了前两个字段为主键的,但是update6操作 不会检查update5执行后的结果。即进行了两次insert操作,这就是为什么数据库中会出现更新属性中主键重复的记录。
注意:数据库中对应的该表是没有主键的,否则在进行第二次insert操作的时候就会出错,导致更新失败。
问题解决
首先,要明确操作目的:对于同一个人,一个taskID中只能有一个角色。

红色方框内容为:=if(if(@supportManager==’yes’,G1,if(F1==null,E1,F1))==D1,0,2)。
该语句的意思是当人员重复的时候,将该人员的角色设为一个弃用的值,这就解决了一个task中出现一个人两种角色的问题。
浏览次数:0 ; 发布日期:2010/07/30