多个单元格绑定一个字段

编辑
  • 文档创建者:文档助手1
  • 浏览次数:8813次
  • 编辑次数:9次
  • 最近更新:Kevin-s 于 2019-06-04
  • 1. 描述

    如下图所示报表,科目名称栏目里面的数据不是从数据库中拖曳扩展得来的,而是直接在单元格中输入,需要将每个科目的期初余额和期末余额填报入库,数据库中有科目 ID、会计科目、期初余额和期末余额几个字段,在填报时,将每一行数据都填入到一张数据表中,在 7.0.6 版本之前,由于一个内置 SQL 中一个数据表字段只能绑定一个单元格,如此,要想将所有科目都填报入库,则需要添加多个内置SQL,会非常影响填报效率,FineReport 为了改进此功能,在 7.0.6 版本新增了添加单元格组的功能,支持在一个内置 SQL 中为单个数据表字段绑定多个单元格,即单元格组。


    2. 实现思路

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

    如上填报属性绑定单元格示例,在执行填报过程的时候,就会拆分为以下 4 个内置 SQL 分别执行:

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

    注:拆分内置 SQL 时是根据位置拆分,并且当单元格和单元格组并存的时候,单元格的值重复根据单元格组内单元格个数进行复制。

    和分别定义 4 个内置 SQL 一致,4 个 UUID 的结果是不一样的,并且其中一个失败,其他两个都会回滚,保持事务的一致性

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

    3. 示例

    以描述中的模板样式为例,我们在 Web 端录入几个会计科目的期初余额和期末余额,然后通过单个内置 SQL 将数据填报入库。

    3.1 模板样式设计

    按照上图所示样式设计报表,期初余额和期末余额控件类型均设置为文本控件。

    3.2 报表填报属性设置

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

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

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

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

    3.3 校验

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

    3.4 效果查看

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

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

    点击提交按钮,将数据入库,点开日志面板,可以看到如下图所示日志信息,从日志中我们可以看出内置sql绑定的单元格数组的确是被拆分为多个内置 SQL 之后,在形成 SQL 语句执行提交操作:

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

    模板效果在线查看请点击 CellsArrayForm.cpt


    具体的模板设置可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\TypicalApp\CellsArrayForm.cpt


    附件列表


    主题: 填报应用
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]