1、数据库表(BI_REPORTTASKSORT)设计html
字段名数据库 |
类型数据库设计 |
可空函数 |
默认值ui |
PK_REPORTTASKSORT spa |
VARCHAR2(36) 设计 |
否3d |
|
NAME htm |
VARCHAR2(80) blog |
否 |
|
NOTE |
VARCHAR2(1024) |
是 |
|
主键名 |
字段 |
PK_BI_REPORTTASKSORT |
PK_REPORTTASKSORT |
2、问题的提出
在帆软填报报表中,PK_REPORTTASKSORT 字段要求惟一(例如主键)。而在填报时,使用UUID()函数能够实现惟一编号。按照官方帮助文档 《使用UUID实现惟一编号》(网址:http://help.finereport.com/doc-view-612.html) 中的介绍,有下列两种方式实现惟一编号:
方式(1)填报属性中使用UUID()函数:将须要惟一编号的字段值直接设置为公式“=UUID()”
方式(2)单元格中使用UUID()函数:在指定的单元格中输入公式“=UUID()”,而后在报表填报属性中将须要惟一编号的字段值绑定到该单元格。
上述方案能够实现惟一编号,可是存在的问题是:在每次提交数据时均可能会虚增记录行(特别是在填报列表中,此问题会更突出),缘由在于UUID()函数值在每次提交时都会自动计算出新值。
3、问题解决
问题解决的方式与官方帮助文档相似,都由上述两种两各方式实现,可是额外须要作一些设置:
(1)在FineReport模板设计器中,将须要惟一编号的字段拖入到报表中,例如B4单元格(注:若是不须要显示惟一编号,则能够将该列隐藏)
(2)修正公式,使用 if() 函数作一个判断,例 “=if(isnull(b4),uuid(),b4)”(注:可根据实际须要修改此公式)
下面以 PK_REPORTTASKSORT 字段绑定为例,报表设计以下:
其中:
第3行:表头
第4列:表列(字段)
B4单元格:对应字段 PK_REPORTTASKSORT ,不设置控件
C4单元格:对应字段 NAME ,文本控件
D4单元格:对应字段 NOTE ,文本控件
E4单元格:公式“=if(isnull(b4),uuid(),b4)”,不设置控件,同时注意须要在“其余”属性中将“插入行策略”调整为“原值”(注:若是经过在填报属性中直接指定此公式,则不须要设置此单元格;只有经过单元格绑定到字段的方式才须要设置此单元格)
方式(1)在填报属性中直接使用函数实现:将 PK_REPORTTASKSORT 列的值设置为公式“=if(isnull(b4),uuid(),b4)”
方式(2)单元格中绑定到字段:(请注意在上面示例中,E4单元格中已经设置了对应的公式)
4、其余
经验1:
在报表填报属性的提交列表中包含的字段,若是没有绑定到单元格,提交时会以默认值(通常为NULL)提交,且会覆盖掉数据库中的对应数据。若是没有包含的字段,在提交时,新增数据行时会使用数据库设计时指定的默认值,原有的数据则不会被更新。