9.3 填报使用

设置填报逻辑

填报报表的定义方法与普通报表完全相同,仅是增加了填报功能的附加属性设置。先定义一个简单的列表。

1

首先确定需要有回填逻辑的布局是主布局,在子布局中是无法设置填报属性的。点击需要设置填报属性的布局,然后在上方选择填报标签页,点击工具栏中填报按钮设置填报逻辑。

新建提交

点击提交标签页左下方的加号按钮,来新建提交逻辑。提交分为自定义提交和SQL提交。自定义提交是使用自己实现的提交类来提交回填数据,SQL提交就是选择数据源中的一张表,向表中回写数据,这里我们选择SQL提交。

5

新建提交后,选择相应的数据源和需要回填数据的表。

2

点击右侧的选择字段,选择表中需要回填数据的字段。

3

点击确定,下面表格中就会出现选择的字段,表格每列的含义如下:

  • 主键 表中的主键字段需要勾选,便于回填数据,可以选择多个,如果主键字段是有相同的数据,更新相同主键数据会将相同主键一起更新。
  • 字段名
    需要更新的数据集字段名。
  • 更新表达式
    字段对应的单元格,如:A3单元格对应数据集中PRODUCT_ID字段,则定义更新表达式为‘=A3’,如果引用的单元格需要指定偏移量,则可以使用coordinate公式,如“=coordinate(‘d3’,null,’a3[-1]b3[+1]’)”。Coordinate公式使用方法参见《UniEAP Report公式查询手册》。
  • 是否为空
    字段是否允许为空,如果允许为空则需要指定<空值处理>。
  • 空值处理
    当字段为空时采用何种填写策略,可以选择空值作为null处理,或者空值时使用默认值。
  • 默认值
    提供回写入数据库的默认值。
  • 更新不成功则插入
    当记录更新不成功时,一般情况为这条记录不存在,如果选择‘更新不成功则插入’,则当更新记录为0时,将该记录做为新记录插入到数据库中。
  • 更新未修改行
    当不选中该选项时,将只更新被修改的记录,未被修改的记录将不被更新;当选中此选项时,无论数据是否被修改,所有的记录都会被提交至数据库。
  • 生效条件
    可以选择“是”或“否”,也可以在此填写公式,例如=$uid=’1’ 表示当前用户登录有提交权限,其他用户没有。
  • 类型
    有智能提交、更新提交、插入提交、删除提交,根据不同需求进行选择。其中智能提交会根据用户当前操作来判断。

修改完相应的属性后如下:

4

SQL提交可以创建多个,自定义提交只能创建一个,新建右侧的按钮分别代表删除和复制。

逻辑主格

逻辑主格是标记提交数据条数的单元格,当数据被修改后,会根据逻辑主格来判断提交的数据是几条。

正常情况下,逻辑主格选择自动即可,遇到一些特殊的报表,就需要手动设置逻辑主格。

逻辑主格的要求:必须为非扩展格。

逻辑主格的作用:确定修改数据的个数和从属。

分组报表是一种常见的报表形式,如果在分组报表中涉及填报内容,那么如何来确定填报的内容是从属于哪个组呢。

46

47

如图中报表所示,如果现在有一张表字段对应城市和订单数,也就是说提交的数据是城市和订单数来做绑定,那么如果修改了三个城市的订单,肯定是希望向表里提交三条数据,这时候逻辑主格就得选择和城市、订单数一起扩展的单元格,从表格上看,d4就是符合要求的,既是非扩展格,又和想要提交的数据从属关系一致。所以这种情况下,d4就是逻辑主格。

如果现在有一张表对应的是国家和合计数据,数据上对应的是c6单元格,这时的逻辑主格就不能是d4了。首先看一下,国家和合计分别对应的是a4和c6单元格,这两个单元格是一一对应的,但是逻辑主格确不能是a4,因为a4是扩展格,所以只能选择a4右边的,后面的依赖格中,b6和c6都是和a4一一对应的,且b6和c6都不是扩展格,所以b6和c6都可以作为这个提交中的逻辑主格。

同样的,如果现在有一张表是对应的地区和合计数据,也就是b4和d5单元格,那同理,b4是扩展格,不能作为逻辑主格,c5和d5都不是扩展格,但是都是和b4一一对应的,所以c5和d5都可以作为逻辑主格。

还有一种情况,就是所有对应的单元格里没有非扩展格,比如下图

48

如果需要入库的数据条数是跟城市相关的,比如填了3个城市,属于2个地区,1个国家,希望入库数据是3条。这时候就需要手动“制造”一个逻辑主格,可以在右侧插入一个单元格,让其依赖c3,然后把d列宽度调成0就可以了

49

如果需要入库的数据是和地区列相关的,就得在地区和城市之间插入一列,让这个单元格作为逻辑主格。

填报的Web操作

填报报表发布之后,在Web端就可以对页面展现的报表执行填报操作。

在线填报操作

对在Web页面展现的报表执行填报操作为在线填报。在线填报操作包括:页面操作;填报报表的导出、打印;填报提交。

页面操作

填报报表的页面操作分为:控件的页面操作、快捷键操作、自动计算、行的智能操作、数据验证。

控件的页面操作

在页面操作时,单击某一可写格时,单元格被选中;再次双击某个可修改格时,可修改格内的控件将被激活;对控件做填写操作后,单元格失去焦点时,控件消失,单元格内的显示值被更新。在不选中单元格的情况下,直接双击单元格,也会激活控件。

填报报表提供了多种基本控件类型来实现页面数据的输入,方便用户使用。

  • 文本输入框
    在设计器中定义文本输入框后,在页面上双击该可写格,文本输入框出现,可以直接输入数据,如下图所示:

24

在输入完成后,点击页面上其他地方,单元格失去焦点时,单元格内数据更新为填写后的数据,如下图所示:

25

【提示】单元格内的值发生变化后,单元格内的文字会采用红色斜体的样式标出,以记录修改状态,如果需要修改该样式,可自行修改Web应用根目录下的report/unieap/pages/report/css/datainput/datainput.css文件即可。

  • 日历
    在设计器中定义日历控件后,在页面上双击该可写格,即可激活日历控件,如下图所示:

26

在选择日期后,点击页面上其他地方,单元格失去焦点后,日历控件消失,输入的日期以相应的格式显示在单元格中,如下图所示:

27

日历控件中年月日时分秒可以通过键盘上下左右键来选择。

  • 下拉列表
    在设计器中定义下拉列表控件后,在页面上,双击该可写格,下拉列表控件将显示出来,如下图所示

28

选择下拉列表中的某一值,点击页面上其他地方,下拉列表消失,选中的值出现在单元格中,如下图所示:

29

下拉列表还可以实现联动的效果,如下图所示,当国家选择某一值后,地区的下拉列表中的内容随之发生变化:

30

  • 下拉树
    在设计器中定义下拉树控件后,在页面上,双击该可写格,下拉树控件将显示出来,如下图所示:

31

选中树上某一节点后,点击页面上其他地方,下拉树控件消失,选中的树节点将显示在单元格中,如下图所示:

32

  • 按钮
    按钮控件提供四种事件类型如下:
    • 自定义JS
      在页面上,点击该可写格中按钮控件,调用定义的Javascript方法。
    • 数据录入提交
      在页面上,点击该可写格中按钮控件,将数据回填入数据库。
    • 参数页面提交
      用户定义复杂参数页面时的提交事件。
    • 参数页面重置
      用户定义复杂参数页面时的重置事件。
  • 自定义
    如果以上控件类型依然无法满足需求,填报报表提供了自定义控件类型,支持用户自定义的控件类型。

快捷键操作

UniEAP Report提供了方便的页面快捷键,让填报报表的编辑快捷方便。快捷键操作涉及到的键盘按键以及功能如下表所示:

按键 选中状态功能 编辑状态功能
左方向键 当前单元格左侧的可编辑单元格变为选中态 当前单元格左侧的可编辑单元格进入编辑状态
右方向键 当前单元格右侧的可编辑单元格变为选中态 当前单元格右侧的可编辑单元格进入编辑状态
上方向键 当前单元格上侧的可编辑单元格变为选中态 当前单元格上侧的可编辑单元格进入编辑状态
下方向键 当前单元格下侧的可编辑单元格变为选中态 当前单元格下侧的可编辑单元格进入编辑状态
Enter键 当前单元格进入编辑状态 当前单元格退出为选中状态
Tab键 当前单元格的下一个可编辑单元格变为选中装态 当前单元格的下一个可编辑单元格进入编辑状态
Shift+Enter 多行文本输入框换行

行的智能操作

行的智能操作分为:增加行,删除行,追加行。

对于可扩展单元格,在填报常规属性页中,设置“页面智能操作”属性,勾选“增加行”,“删除行”后,在Web端报表展现时,右键点击该单元格,会出现插入行,删除行,追加行选项。如下图所示:

35

点击“插入行”,在所选单元格上方增加一行数据;点击“删除行”,当前行数据被删除;点击“追加行”,在该单元格扩展出来的数据的末尾增加一行数据。

【注意】在删除行时,数据并未提交数据库删除,而是将删除的数据记录在内存中,在填报表提交时,删除的行会同其它的修改数据同时提交至数据库中。删除行是一个不可逆操作,请慎重操作。

填报报表的导出、打印

在某种特殊情况下,用户希望能够修改页面数据,但并不提交给数据库,而是将修改后的数据导出或打印出来。填报报表的导出,打印支持了这种需求。

填报报表在修改完成后,点击页面上的导出或打印按钮,会将修改后的报表进行导出或打印,以保持页面展现与导出、打印的一致。

填报提交

报表修改完成后,点击<填报>按钮下“填报”选项,如下图所示:

40

点击确定后,出现填报成功或失败提示框,如下图所示:

41

若填报成功,对话框会提示更新记录数,这样数据就更新入数据库中。

【注意】如果定义了自定义更新类,则在数据修改完毕点击填报按钮时,后台通过调用用户自定义的更新类来操作数据,报表内置的数据集更新方式则不起作用,同样,如果定义了数据集更新方式,自定义更新类则不起作用。如果定义了更新辅助类,在数据提交前会调用更新辅助类中beforeSave方法,在提交后会调用更新辅助类中afterSave方法。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""