报表填报时,怎样实现多个单元格绑定一个字段?

场景描写叙述web

例如如下图所看到的报表,科目名称栏目里面的数据不是从数据库中拖曳扩展得来的。而是直接在单元格中输入。需要将每个科目的期初剩余金额和期末剩余金额填报入库,数据库中有科目ID、会计科目、期初剩余金额和期末剩余金额几个字段。在填报时,将每一行数据都填入到一张数据表中。原本要想将所有科目都填报入库,则需要加入多个内置SQL,会很影响填报效率,今天我来告诉你们可以在一个内置SQL中为单个数据表字段绑定多个单元格,即单元格组。sql


实现思路数据库

报表填报属性中为某个字段绑定单元格组,例如如下图,数据表中的会计科目科目代码字段在一个内置SQL中分别绑定了一个单元格组,那么在运行填报功能的时候。报表开发工具FineReport后台会本身主动将单元格组依据位置拆分为多条内置SQL。数组


如上填报属性绑定单元格演示样例。在运行填报过程的时候,就会拆分为下面4个内置SQL分别运行:工具

[uuid(),A2,B2]、[uuid(),A3,B3]、[uuid,A4,B4]、[uuid(),A5,B5]post

注:拆份内置SQL时是依据位置拆分。并且当单元格和单元格组并存的时候。单元格的值反复依据单元格组内单元格个数进行复制。开发工具

和分别定义4个内置sql一致。4个uuid的结果是不同的,并且当中一个失败,其它两个都会回滚,保持事务的一致性ui

注:绑定单元格组是先拆分为多个内置sql入库规则,而后再造成SQL语句提交入库,而不是直接造成sql,因为单元格的值可能也是数组。spa

演示样例设计

以描写叙述中的模板样式为例,咱们在web端录入几个会计科目的期初剩余金额和期末剩余金额,而后经过单个内置SQL将数据填报入库。

一、 模板样式设计

依照上图所看到的样式设计报表,期初剩余金额和期末剩余金额控件类型均设置为文本控件。

二、报表填报属性设置

点击模板>报表填报属性,点击加入button,加入一个内置SQL,为数据字段绑定单元格组。例如如下图:


注:单元格组手动编辑的时候。单元格间的分隔符支持英文的逗号、分号和空格。

另:假设单元格组内单元格个数超过5个,将再也不显示所有单元格,而是直接显示“已经选择X个单元格”,例如如下图:


注:绑定多个单元格时,不能使用公式,因为单元格数组是先拆分为多个内置SQL,而后再造成入库sql语句。而公式数组则是直接造成入库sql语句,不会拆分为内置sql。

三、校验

假设列的值设置为单元格组,则需要保证设置的各单元格组个数相等。这样才能够一一匹配起来,不一样意如一个列是3个单元格,一个列是4个单元格。在智能加入单元格组对话框时点击肯定或者在填报属性界面改动以后点击肯定会弹出警告框,例如如下图:


四、效果查看

点击填报预览,在前面4个科目输入相应的期初剩余金额和期末剩余金额,例如如下图:


注:由于在设置填报属性的时候。单元格数组仅仅绑定了前面4行的数据,故咱们这里仅仅对前面4行操做。

点击提交button,将数据入库。点开日志面板。可以看到例如如下图所看到的日志信息。从日志中咱们可以看出内置sql绑定的单元格数组的确是被拆分为多个内置sql以后,在造成sql语句运行提交操做:


而后再新建经过数据集查看科目剩余金额表数据表中的数据,例如如下图,可以看到更改的4个科目数据发生了变化:

 

详细的模板设置可參考:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\TypicalApp\CellsArrayForm.cpt

相关文章
相关标签/搜索