制作交叉填报表

阅读(5782) 标签: 交叉, 下拉数据表, 下拉列表框,

在常见的分组填报基础上,还常常会遇到这样一种填报需求:将多层分组填报进行行转列操作,从而实现交叉填报效果。下面我们通过一个具体的实例来看一下如何制作简单的交叉填报表。

上图所示是一张典型的交叉填报表,行定义为货主地区,列定义为雇员,汇总数据为销售额。是以货主地区为维度的销售人员销售额的统计,统计销售额数据由订单基础表汇总而来,数据回填到一个汇总数据表中。

报表设计详细步骤如下:

第一步:设计填报表

打开润乾报表设计器,启动示例数据库,连接demo数据源。

点击【文件】à【新建填报表】,系统生成一张空白填报表。

编辑填报表内容和样式,内容如下图所示:

设置单元格斜线

选中单元格A1,点击菜单栏中【填报】à【边框设置】或者右键菜单选择【边框设置】,选择斜线属性,然后直接在单元格里输入分类字段:货主地区,雇员,销售额,字段间用逗号隔开,逗号为英文输入状态的逗号。

然后将单元格的高度调高为合适的高度,否则单元格高度太低会看不到斜线效果。

第二步:设置单元格类型

选中B1A2单元格,在右侧单元格属性栏中设置其单元格类型为维度格。

选中B2单元格,在右侧单元格属性栏中设置其单元格类型为数值格,如下图。

第三步:编辑维度格

选中B1单元格,在右侧单元格属性栏的表达式中编辑:=地区雇员销售额.id(雇员ID).rvs()

编辑A2单元格的表达式为:=地区雇员销售额.id(货主地区).rvs()

这两个维度格单元格表达式返回维序列,是扩展格,维序列不可出现重复值,所以此例中通过id()进行了distinct操作。其中,B1单元格横向扩展;A2单元格纵向扩展。

可参考同记录采集规则小节,查看该填报表对应的分片结果。

第四步:设置字段名称

选中B1单元格,在右侧单元格属性栏的字段名称中输入“地区雇员销售额.雇员ID”。

设置A2单元格的字段名称为:地区雇员销售额.货主地区。

设置B2单元格的字段名称为:地区雇员销售额.销售额。

此处地区雇员销售额为取数数据来源的对象,表示前2行这片区域的数据取自地区雇员销售额。

第五步: 设置数据处理

订单表数据如图:

本例中销售额数据是由订单表汇总而来,回填到CPXSTJC表中。在用“ 使用向导生成脚本” 生成的脚本时,数据来源和数据去向需是同一个表,所以本例不能直接用“ 使用向导生成脚本”快速生成需要的取数和回填脚本,因此本例使用脚本模式,直接编辑脚本。

点击【填报】à【数据处理】,编辑数据来源和数据去向脚本。数据来自订单表和雇员表。

数据来源脚本:

A2:从订单表中查询出"雇员ID""货主地区"""订单金额",结果返回成序表。A2的结果如下图:

A3:将A2的结果按照"雇员ID""货主地区"分组(确保主键值唯一),每组汇总订单金额,然后形成以"雇员ID""货主地区""销售额"为字段的新序表,最后将新序表赋给变量"地区雇员销售额"A3的结果如下图:

A4: 从雇员表中查询出"雇员ID""姓氏"+"名字"组合成的"姓名",为填报表中的编辑风格做准备。

数据去向脚本:

db.update()只有新对象,提交时程序直接将新对象的数据按照主键设置更新到CPXSTJC表,此时只涉及修改和插入操作,无删除操作。关于update函数使用参见第8章的扩展。

保存对象旧数据

点击【提取对象名】按钮,提取对象名。

第六步:自动计算

编辑C2单元格的表达式为=sum({B2})

编辑B3单元格的表达式为=sum({B2})

编辑C3单元格的表达式为=sum({B3})

第七步:设置显示格式

设置B2C2B3C3的显示格式为¥#0.00

第八步:设置编辑风格

此例中维度格对应的字段值是编码,但为了展现数据更直观,所以需要给维度格设置显示值,通常我们通过给维度格设置编辑风格来设置显示值。

例如B1,选中单元格B1,点击【填报】à【编辑风格】或者右击选择【编辑风格】,弹出“编辑风格”窗体,如下图所示:

在“编辑风格”下拉框中选择“下拉数据表”风格类型,如下图所示:

点击【设置】按钮,弹出下拉数据表编辑对话框,设置数据表名称、显示列、数据列和空选项文字。内容如下图所示:

例如A2,选中单元格A2,点击【填报】à【编辑风格】或者右击选择【编辑风格】,弹出“编辑风格”窗体,如下图所示:

在“编辑风格”下拉框中选择“下拉列表框”风格类型,如下图所示:

点击【设置】按钮,弹出下拉列表框编辑对话框,设置代码值、显示值和空选项文字,内容如下图所示:

保存该填报表文件为6.2.sht

第九步:WEB预览

点击WEB预览按钮wps63BB.tmp,服务器自动启动。填报表WEB预览效果如下图所示: