动态改变填报数据库表(日报表、月报表填报)

  • 文档创建者:文档助手1
  • 编辑次数:15次
  • 最近更新:Wendy123456 于 2020-03-01
  • 1. 概述

    1.1 版本

    报表服务器版本
    10.0

    1.2 问题描述

    客户的用户群体较大,涵盖范围较广,为了数据安全,在数据填报录入时,需要根据用户所在的区域,将用户录入的数据存入不同的数据库表中,这些数据表的表结构完全一样(即表的字段名,字段类型等设置完全一样)。

    如果不同区域使用不同的模板,会加大开发和后期维护的工作量,那么怎么才能在一张模板中实现,根据区域的不同,将数据填报至不同的数据库表中呢?

    1.3 解决思路

    在 报表填报属性 添加内置 SQL,选择数据库和数据表的时候,在选择数据库和数据表名称的地方直接输入=$参数

    如下图所示:

    1583064789918204.png

    在模板中添加该参数,并给参数赋值(值应该为数据库名称或者数据表名称),在点击提交按钮的时候,将参数值传递过来,实现入库操作。

    注1:参数的值为不同的数据表名称,那么所有这些数据表与模板绑定的字段必须完全一样。

    注2:数据库名称是指 FineReport 建立的数据连接名称。

    2. 示例

    以 FineReport 设计器内置 FRDemo 的「订单表」和「S 订单表」为例,向这两张表中插入数据。

    2.1 模板设计

    在 FineReport 设计器中,点击文件>新建普通报表,参照下图设计模板:

    1583065165483209.png

    控件类型与单元格的对应关系如下表所示:

      单元格 控件类型 控件数据字典  单元格形态 
      A2  数字控件
      B2  下拉框控件实际值:客户表的客户ID,显示值:客户名称实际值:客户表的客户ID,显示值:客户名称
      C2  日期控件
      D2  下拉框控件实际值:运货商表的运货商ID,显示值:公司名称实际值:运货商表的运货商ID,显示值:公司名称
      E2  下拉框控件实际值:订单表的货主地区,显示值:货主地区
    注1:添加控件的方法请参考: 控件设置

    注2:下拉框数据字典和形态的具体设置方式请查看 数据字典

    2.2 添加模板参数

    在 FineReport 设计器中点击模板>模板参数,添加两个参数basetable,默认值为空。

    其中 base 参数用来传递数据库的名称,table 参数用来传递表名,如下图所示:
    1583065676750524.png

    2.3 参数设置

    1)将 base 参数和 table 参数全部添加到「参数面板」中,base 控件和 table 控件均使用下拉框,如下图所示:
    1583066924819384.png

    2)修改 Labelbase 控件的控件值为数据库:,如下图所示:

    1583067065770672.png

    以相同步骤,修改 Labeltable 控件的控件值为数据表:

    3)base 参数下拉框的控件值为FRDemo ,如下图所示:

    1583067693474565.png

    4)table 参数下拉框的控件值为订单 ,数据字典中类型设置选择自定义,输入所有需要填报的数据表的名称,形成下拉框的下拉选项。

    如下图所示:

    1583068074884340.png

    2.4 报表填报属性设置

    注:由于参与动态填报的数据库中的数据表中与单元格绑定的字段都是一致的,所以随便选择一组在数据库中存在的数据库名和表名称即可,主要是为了获取需单元格绑定的数据表字段。

    1)退出参数面板,点击模板>报表填报属性,添加内置 SQL,数据库后面输入=$base,表后面输入=$table,会弹出一个参数输入框,base 参数输入 FRDemo,点击确定。如下图所示:

    1583068829522637.png

    2)点击智能添加字段,会弹出一个参数输入框,base 参数输入 FRDemo,table 参数输入订单。如下图所示:

    1583068924480989.png

    3)选择需要填报入库的字段,点击智能添加单元格,将模板总的字段与数据表字段绑定起来,设置「订单 ID 」为主键,如下图所示:
    1583069103272235.png

    2.5 效果查看

    注:该方法支持移动端,以 PC 端效果为例。

    保存模板,点击填报预览

    如下图所示,数据库由于只有一个值,无需选择,即 base 参数为 FRDemo。

    注:base参数也是可以改变的,只需要给其赋值即可。

    1)数据表选择订单,点击查询,填报一条记录,提交入库,即可在订单表中看到刚刚插入的记录,而 S 订单表中则没有。如下图所示:

    1583070333338265.png

    2)数据表选择 S 订单,点击查询,填报一条记录,提交入库,即可在S 订单表中看到刚刚插入的记录,而订单表中则没有。如下图所示:

    1583071170668490.png

    3. 已完成模板

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\TypicalApp\DynamicForm.cpt

    点击下载模板:DynamicForm.cpt

    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!