数据库中带自增字段的物理表如何进行数据更新?

 

以 mysql 数据库为例,具体说明下在润乾报表中如何进行带自增字段表的更新处理。

一、建表语句

create table test2(id int primary key auto_increment,name VARCHAR(20),zhi DECIMAL);

二、填报表制作

示例下载:zizeng.zip

1、绘制常规行式填报表

imagepng
设置 A2 字段名称为:test2.id,由于第一行的标题名称和对象字段名称一致,所以后面的设置可以不写。
2、数据处理
1)来源脚本

imagepng
连接数据库,读取数据后关闭数据库连接,这里按照常规取数即可。

2)去向脚本

imagepng

这里的难点有两个:
<1> 自增主键 id 为空时的处理
虽然最后主键 id 会按照数据库的自增设置进行值的更新,但是需要保证新旧对象对比数据时,id 字段是有值的,所以当 id 值为空时,需要通过脚本配置为空值赋值:

>test2.run(if(~.id==null,~.id=rand(10000)))

这里是使用 run 函数对新对象里为空的 id 字段进行赋值,赋值规则可以自己定,上面示例是从 1~10000 中选取一个随机数作为主键值。

<2> 自增主键更新时 update 的特殊用法
对于自增主键的更新,update 要使用 @1 选项,表示第一个字段为自增字段,需要按照数据库的设置更新值
需要注意的是:这里的 1 为数字 1,而不是字母 l

三、填报测试:

imagepng
填写数据后(id 可写可不写),点击提交,可以看到数据库中添加了对应的记录

imagepng