1.1 网格报表

网格报表是我们最常见的报表之一,一般情况下,网格报表会根据数据集纵向扩展,我们将这样的网格报表称之为普通的网格报表;在实际的业务需求中,横向扩展的网格报表也会经常被应用到,下面我们对这两类网格报表做一下介绍。

1.1.1  普通网格报表

设计时:

67图3.1  网格报表设计图

  • 合并单元格B2、C2、D2、E2、F2、G2、H2,输入标题名称,并居中显示
  • 选择 B4—-H5为报表区域,设置报表边框
  • 在B4、C4、D4、E4、F4、G4、H4中输入业务字段的名称,并将背景色设置为蓝色
  • 在B5中,输入表达式select(p1.RPRODUCTID),表示引用产品ID(RPRODUCTID)的全部数据。
  • 在C5中,输入表达式RCATEGORYNAME,其他单元格输入的表达式与C5类似。

运行时:

68图3.2  网格报表运行结果图

1.1.2  横向扩展网格报表

69图3.3  横向扩展网格报表设计图

70

图3.4  横向扩展网格报表标题扩展属性设置图

  • B2输入标题名,为了使标题居中,添加批注clospan:$ALL.PR4C3+3,意思为根据第四行第三列的表达式selecth进行全列扩展,
  • B4-B10添加表头。
  • C4-C10添加业务字段。
  • C4输入表达式selecth(p1.RPRODUCTNAME),表示引用RPRODUCTNAME的全部数据进行横向扩展。

运行时:

71图3.5  横向扩展网格报表运行结果图

1.2  分组报表

1.2.1   一级分组报表

设计时:

72图3.6   一级分组报表设计图

  • 在B4、C4、D4、E4、F4、G4中输入需要显示的业务字段名称
  • 在B5中输入group(p1.RCATEGORYNAME),表示数据根据产品类别(RCATEGORYNAME)进行分组显示。
  • 在C5中输入select(p1.RPRODUCTNAME),意思是引用产品名称(RPRODUCTNAME)的全部数据。
  • 在D5中输入RCOMPANYNAME, E5-G5 输入与D5类似。

运行时:

73

图3.7   一级分组报表运行结果图

1.2.2  二级分组报表

设计时:

74图3.8   二级分组报表设计图

  • 在B4、C4、D4、E4、F4、G4中输入需要显示的业务字段名称
  • 在B5中输入group(p1.RCOMPANYNAME),意思是对字段RCOMPANYNAME的数据进行分组。
  • 在C5中输入group(p1.RCATEGORYNAME),意思是对字段RCATEGORYNAME的数据进行分组。
  • 在D5中输入select(p1.RPRODUCTNAME),意思是引用RPRODUCTNAME的数据。
  • 在E5中输入RCOMPANYNAME, E5-G5 输入与D5类似。

运行时:

75图3.9   二级分组报表运行结果图

1.2.3   二级分组报表(行统计)

设计时:

76图3.10  二级分组报表设计图

  • 合并B5、B6,输入表达式group(p1.RCOMPANYNAME),表示以供货商(RCOMPANYNAME)的数据进行分组。
  • 在C5中,输入表达式group(p1. RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)的数据进行分组。
  • 在D5中,输入表达式select(p1. RPRODUCTNAME),表示引用产品名称(RPRODUCTNAME)的全部数据。
  • 在E5-G5中,分别输入表达式RQUANTITYPERUNIT(单位数量)、p1.RUNITPRICE(单价)、p1.RUNITSINSTOCK(库存数量),表示这里引用的哪个关系的数据。
  • 在F6中,输入表达式=SUM(F5),表示每个供货商(RCOMPANYNAME)中每个产品类别(RCATEGORYNAME)的各产品(RPRODUCTNAME)的单价(RUNITPRICE)之和。
  • 在F7中,输入表达式=SUM(F5),表示为每种供货商(RCOMPANYNAME)的单价(RUNITPRICE)之和。
  • 同理,在G6、G7中输入的表达式=SUM(G5),表示计算每个分组中库存数量(RUNITSINSTOCK)的合计。

运行时:

77图3.11  二级分组报表运行结果图

1.2.4  二级分组报表(行列统计)

设计时:

78图3.12  二级分组报表设计图

  • 合并B5、B6,输入表达式group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)的进行分组。
  • 在C5中,输入表达式group(p1.RPRODUCTNAME),表示以产品名称(RPRODUCTNAME)的数据进行分组。
  • 在D5中,输入表达式select(p1.RCOMPANYNAME),表示引用供货商(RCOMPANYNAME)的全部数据。
  • 在E5-G5中,分别输入表达式RQUANTITYPERUNIT(单位数量)、p1.RUNITPRICE(单价)、p1.RUNITSINSTOCK(库存数量),表示引用的关系数据。
  • 在H5中,输入表达式=F5*G6,表示该单元格的值为单价x数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在F6中,输入表达式=SUM(F5),表示每个产品类别(RCATEGORYNAME)中每个产品(RPRODUCTNAME)的各供货商(RCOMPANYNAME)的单价(RUNITPRICE)之和。
  • 在F7中,输入表达式=SUM(F6),表示为每种产品类别(RCATEGORYNAME)的单价(RUNITPRICE)之和。
  • 同理,在G6、G7中输入的表达式=SUM(G5),表示计算每个分组中库存数量(RUNITSINSTOCK)的合计。
  • 在H6、H7中输入的表达式=SUM(H5),表示计算每个分组中单价x数量(RUNITPRICE * RUNITSINSTOCK)的合计。

运行时:

79图3.13  二级分组报表运行结果图

1.2.5   二级分组报表(分组统计)

设计时:

80图3.14  二级分组报表设计图

  • 合并B5、B6、B7,输入表达式group(p1.RCOMPANYNAME),表示以供货商(RCOMPANYNAME)的数据进行分组。
  • 合并C5、C6中,输入表达式group(p1. RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)的数据进行分组。
  • 在D5中,输入表达式select(p1. RPRODUCTNAME),表示引用产品名称(RPRODUCTNAME)的全部数据。
  • 在E5-G5中,分别输入表达式RQUANTITYPERUNIT(单位数量)、p1.RUNITPRICE(单价)、p1.RUNITSINSTOCK(库存数量),表示这里引用的哪个关系的数据。
  • 在F6中,输入表达式=SUM(F5),表示每个供货商(RCOMPANYNAME)中每个产品类别(RCATEGORYNAME)的各产品(RPRODUCTNAME)的单价(RUNITPRICE)之和。
  • 在F7中,输入表达式=SUM(F5),表示为每种供货商(RCOMPANYNAME)的单价(RUNITPRICE)之和。
  • 在F8中,输入表达式=SUM(F5),表示为所有数据单价(RUNITPRICE)总合计。
  • 同理,在G5、G6、G7中输入的表达式=SUM(G5),表示计算每个分组中库存数量(RUNITSINSTOCK)的合计。
  • 在H5、H6、H7中输入的表达式=SUM(H5),表示计算每个分组中单价x数量(RUNITPRICE * RUNITSINSTOCK)的合计。

运行时:

81图3.15  二级分组报表运行结果图

1.3  交叉报表

1.3.1  二维交叉报表

82图3.16  二维交叉报表设计图

  • 在B5中,输入group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。
  • 在C4中,输入grouph(p1.RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分组。
  • 在C5中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C3+1,表示标题根据第四行第三列的数据进行扩展,并在最终结果上加一列(因为计算居中时要包含B列)。
  • 在B4中,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 在C5中,添加批注default-value:0,表示单元格默认值为0。

运行时:

83图3.17  二维交叉报表运行结果图

1.3.2  多维交叉报表

设计时:

84图3.18  多维交叉报表设计图

  • 在B6中,输入group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。
  • 在C6中,输入group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。
  • 在D4中,输入grouph(p1. RREGION),表示以区域(RREGION)进行分组。
  • 在D5中,输入grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分组。
  • 在D6中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C4+2,表示标题根据第四行第三列的数据进行扩展,并在最终结果上加两列(因为计算居中时要包含B和C列)。
  • 合并B4、B5、C4、C5中,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 在D6中,添加批注default-value:0,表示单元格默认值为0。

运行时:

85图3.19  多维交叉报表运行结果图

1.3.3  二维交叉报表(行列统计)

设计时:

86图3.20  二维交叉报表设计图

  • 在B5中,输入group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。
  • 在C4中,输入grouph(p1.RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分组。
  • 在C5中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在C6中,输入=SUM(C5),表示计算每个供应商(RCOMPANYNAME)所有产品(RPRODUCTNAME)的采购成本(RUNITPRICE * RUNITSINSTOCK)合计。
  • 在D5中,输入=SUM(C5),表示计算所有供应商(RCOMPANYNAME)的每个产品(RPRODUCTNAME)的采购成本(RUNITPRICE * RUNITSINSTOCK)合计。
  • 在D6中,输入=SUM(D5),表示计算全部供应商产品的总成本。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C3+1,表示标题根据第四行第三列的数据进行扩展,并在最终结果上加一列(因为计算居中时要包含B)。
  • 在B4中,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 在C5中,添加批注default-value:0,表示单元格默认值为0。

运行时:

87图3.21  二维交叉报表运行结果图

1.3.4   多维交叉报表(行统计)

设计时:

88图3.22  多维交叉报表设计图

  • 合并B6、B7、B8,输入group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。
  • 合并C6、C7,输入group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。
  • 在D4中,输入grouph(p1. RREGION),表示以区域(RREGION)进行分组。
  • 在D5中,输入grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分组。
  • 在D6中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在E6中,输入=SUM(D6),表示所有供应商中,每个产品的采购成本合计。
  • 在D7-D9中,分别输入=SUM(D6),表示按照单元格所在行、列对应的分组数据,分别计算各分组的采购成本。
  • 在E7-E9中,分别输入=SUM(E6),表示按照单元格所在行对应的分组数据,分别计算各分组的采购成本。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C4+2,表示标题根据第四行第三列的数据进行扩展,并在最终结果上加两列(因为计算居中时要包含B和C列)。
  • 合并B4、B5、C4、C5中,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 在D6中,添加批注default-value:0,表示单元格默认值为0。

运行时:

89图3.23  多维交叉报表运行结果图

1.3.5   多维交叉报表(行列统计)

设计时:

90图3.24  多维交叉报表设计图

  • 合并B6、B7,输入group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。
  • 在C6中,输入group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。
  • 合并D4、E4,输入grouph(p1. RREGION),表示以区域(RREGION)进行分组。
  • 在D5中,输入grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分组。
  • 在D6中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在E6中,输入=SUM(D6),表示所有供应商中,每个产品的采购成本合计。
  • 在D7-D8中,分别输入=SUM(D6),表示按照单元格所在行、列对应的分组数据,分别计算各分组的采购成本。
  • 在E7-E8中,分别输入=SUM(E6),表示按照单元格所在行对应的分组数据,分别计算各分组的采购成本。
  • 在F6-F7中,分别输入=SUM(E6)、=SUM(E7)、=SUM(E8),表示分别计算各分组数据上列的合计。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C4+2,表示标题根据第四行第三列的数据进行扩展,并在最终结果上加两列(因为计算居中时要包含B和C列)。
  • 合并B4、B5、C4、C5中,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 在D6中,添加批注default-value:0,表示单元格默认值为0。

运行时:

91

图3.25  多维交叉报表运行结果图

1.4  卡片报表

卡片式报表在其他报表工具中,有称其为“自由报表”,它是将数据库表中的每一条数据都以一个卡片的形式展现,在这一节,我们讲解一下卡片报表在X5report中的设计。

设计时:

92图3.26  卡片报表设计图

  • 合并单元格A4、A5、A6、A7、A8 ,对于卡片报表,合并第一列的单元格目的是将该部分作为一个整体进行显示。该方法也适用于“主从报表”的制作。
  • 合并单元格B2、C2、D2、E2、F2、G2,输入标题名称,并居中显示
  • 在C4中输入select(e1. REMPLOYEEID),
  • 在E4中输入EMPLOYEENAME, C5、C6、C7、C8、E5、E6输入方式与E4类似。

运行时:

93图3.27  卡片报表运行结果图

1.5  主从报表

1.5.1  普通主从报表

设计时:

94图3.28  主从报表设计图

  • 合并B1-G1,输入标题,并居中显示。
  • 在B3-G6区域中,输入主表字段标题与引用业务字段。
  • 在B7-G8区域中,输入从表字段标题与引用业务字段。
  • 在C3中,输入select(p1.RORDERID),表示主表引用p1数据集的数据。
  • 在C3中,添加批注is-master-dataset:true,表示p1数据集为主表。
  • 在C3中,添加批注individual-table:true,表示该区域独立成一张表。
  • 在C8中,输入select(e1.RORDERID,’RORDERID=p1.RORDERID’),表示从表引用e1数据集的数据,并使用订单ID(RORDERID)作为外键关联主表。
  • 在C8中,添加批注master-dataset:p1,表示e1数据集的主表是p1。
  • 在C8中,添加批注page-record:1,表示打印时,每页显示一张主从报表。
  • 在B8中,输入=COUNT(C8),并添加批注v-acc:true、v-group:$PR3C3,表示该列单元格按照e1数据集的数据进行序号递增。
  • 合并A3-A9,表示A3-A9所在的行作为一个整体显示。

运行时:

95图3.29  主从报表运行结果图

1.5.2  分组主从报表

设计时:

96图3.30  分组主从报表设计图

  • 合并B1-G1,输入标题,并居中显示。
  • 在B3-G6区域中,输入主表字段标题与引用业务字段。
  • 在B7-G8区域中,输入从表字段标题与引用业务字段。
  • 在C3中,输入select(p1.RORDERID),表示主表引用p1数据集的数据。
  • 在C3中,添加批注is-master-dataset:true,表示p1数据集为主表。
  • 在C3中,添加批注individual-table:true,表示该区域独立成一张表。
  • 在B8中,输入group(e1.RORDERID,”,’RORDERID=p1.RORDERID’),表示引用e1数据集的数据并根据订单ID(RORDERID)进行分组。使用自身的订单ID(RORDERID)作为外键关联主表。
  • 在B8中,添加批注master-dataset:p1,表示e1数据集的主表是p1。
  • 在B8中,添加批注page-record:1,表示打印时,每页显示一张主从报表。
  • 在C8中,输入select(e1.RPRODUCTNAME),表示引用e1数据集的全部数据。
  • 合并A3-A9,表示A3-A9所在的行作为一个整体显示。

运行时:

97图3.31  分组主从报表运行结果图

1.6  多源关联分片报表

1.6.1   多源交叉报表

设计时:

98图3.32  多源交叉报表设计图

  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C3+1,表示标题会以第四行第三列的数据进行扩展,并最终结果+1列(因为计算居中时要包含B列)。
  • 在B5中,输入group(s1.RPRODUCTNAME),表示纵向使用s1数据集进行扩展,并对产品名称(RPRODUCTNAME)进行分组。
  • 在C4中,输入grouph(s2.RCOMPANYNAME),表示横向根据s2数据集进行扩展,并对供货商(RCOMPANYNAME)进行分组。
  • 在C5中,输入=SUM(s1.RUNITPRICE*s1.RUNITSINSTOCK),表示该单元格的值为单价乘以库存数量(RUNITPRICE* RUNITSINSTOCK)。
  • 在C5中,添加批注conditionv:s2.RSUPPLIERID=s1.RSUPPLIERID,表示以供应商ID(RSUPPLIERID)作为s1和s2数据集的关联关系。

运行时:

99图3.33  多源交叉报表运行结果图

1.6.2   多源纵向分片报表

设计时:

101图3.34  多源纵向分片报表设计图

  • 在B6中,输入group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。
  • 在C6中,输入group(p1.RPRODUCTNAME),表示纵向以产品(RPRODUCTNAME)进行分组。
  • 在D4中,输入grouph(p1. RREGION),表示以区域(RREGION)进行分组。
  • 在D5中,输入grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分组。
  • 在D6中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C4+2,表示标题根据第四行第四列的数据进行扩展,并在最终结果上加两列(因为计算居中时要包含B、C列)。
  • 在B4中,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 类似的,在B7-D7的区域,输入对应的s2数据集的表达式。
  • 在D7中,添加批注main-dataset:s1,conditionv:s2.RSUPPLIERID=s1.RSUPPLIERID,表示s2以s1数据集为主表,通过供应商ID(RSUPPLIERID)相关联。

运行时:

102图3.35  多源纵向分片报表运行结果图

1.6.3  多源横向分片报表

设计时:

104图3.36  多源横向分片报表设计图

  • 在B6中,输入group(p1.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。
  • 在C6中,输入group(p1.RPRODUCTNAME),表示以产品名称(RPRODUCTNAME)进行分组。
  • 在D4中,输入grouph(p1. RREGION),表示以区域(RREGION)进行分组。
  • 在D5中,输入grouph(p1. RCOMPANYNAME),表示横向以供应商(RCOMPANYNAME)进行分组。
  • 在D6中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C4+2,表示标题根据第四行第四列的数据进行扩展,并在最终结果上加两列(因为计算居中时要包含B、C列)。
  • 合并B4、B6、C4、C5,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 类似的,在E4-E6的区域,输入对应的s2数据集的表达式。
  • 在E6中,添加批注conditionh:s2.RPRODUCTID=s1.RPRODUCTID,表示s2和s1数据集通过供应商ID(RSUPPLIERID)相关联。

运行时:

105图3.37  多源横向分片报表运行结果图

1.6.4   多源双向分片报表

设计时:

106

图3.38  多源双向分片报表设计图

  • 在B6中,输入group(s1. RORDERDATE_YEAR),表示以销售日期的年份(RORDERDATE_YEAR为别名)进行分组。
  • 在C6中,输入group(s1. RORDERDATE_MOUNTH),表示以销售日期的月份(RORDERDATE_MOUNTH)进行分组。
  • 在D4中,输入grouph(s1. RREGION),表示以区域(RREGION)进行分组。
  • 在D5中,输入grouph(s1. RCITY),表示以市(RCITY)进行分组。
  • 在D6中,输入=SUM(s1.RUNITPRICE*s1. RQUANTITY),表示该单元格的值为对应的单价x数量单位(RUNITPRICE * RQUANTITY)。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C4+2,表示标题根据第四行第四列的数据进行扩展,并在最终结果上加两列(因为计算居中时要包含B、C列)。
  • 合并B4、B6、C4、C5,添加批注display-type:slant-line,表示该单元格显示斜线。
  • 在B7中,输入group(s2.RTITLE),表示以雇员职务(RTITLE)进行分组。
  • 在C7中,输入group(s2.RFULLNAME),表示以雇员姓名(RFULLNAME)进行分组。
  • 在D7中,添加批注main-dataset:s1和conditionv:s2.REMPLOYEEID=s1.REMPLOYEEID,表示s2和s1数据集通过雇员ID(REMPLOYEEID)相关联。
  • 在E4中,输入产品类别。
  • 在E5中,输入grouph(s3.RCATEGORYNAME),表示以产品类别(RCATEGORYNAME)进行分组。
  • 在E6中,添加批注main-dataset:s1和conditionh:s3.RPRODUCTID=s1.RPRODUCTID,表示s3和s1数据集通过产品ID(RPRODUCTID)相关联。
  • 在E7中,添加批注main-dataset:s1和conditionh:s3.RPRODUCTID=s1.RPRODUCTID和conditionv:s2.REMPLOYEEID=s1.REMPLOYEEID,表示该单元格计算的数据必须符合批注里给定的两个关联条件。

运行时:

108

图3.39  多源横向分片报表运行结果图

1.6.5   报表图表混合表

设计时:

109图3.40  报表图表混合报表设计图

  • 在C4中,输入grouph(p1.RPRODUCTNAME),表示横向以产品(RPRODUCTNAME)进行分组。
  • 在B5中,输入group(p1.RCOMPANYNAME),表示纵向以供应商(RCOMPANYNAME)进行分组。
  • 在C5中,输入=SUM(p1.RUNITPRICE*p1.RUNITSINSTOCK),表示该单元格的值为对应的单价x库存数量(RUNITPRICE * RUNITSINSTOCK)。
  • 在B2中,输入标题,添加批注colspan:$ALL.PR4C3+1,表示标题根据第四行第三列的数据进行扩展,并在最终结果上加一列(B列)。
  • 在B8中,添加批注object:chartA,colspan:$ALL.PR4C3+1,表示单元格引用对象chartA(图表组件id),并且根据第四行第三列的数据进行扩展,并在最终结果上加一列(B列)。

110

运行时:

111图3.41  报表图表混合报表运行结果图

1.7  报表特性

1.7.1   递增序号

以普通网格报表为例。设计时:

112图3.42  递增序号报表设计图

  • 添加新列(B列)。
  • 在B4中,输入文字“序号”。
  • 在B5中,输入=COUNT(C5),并添加批注v-acc:true、v-group:$ALL,表示根据C5单元格的全部数据进行序号递增。

113图3.43  递增序号属性设置图

运行时:

114

图3.44  递增序号报表运行结果图

1.7.2  单元格扩展

对于列会自动扩展,即使用表达式selecth、grouph的报表。为了保证标题可以在列扩展之后仍可以居中显示。我们使用批注colspan和rowspan进行设置。

设计时:

115图3.45  单元格扩展属性示例图

  • 在B2中,插入批注colspan:$ALL.PR4C3。
  • colspan:$ALL:固定值,列的扩展。
  • PR3C3+1:表示标题按照第三行,第三列进行显示。由于B列并没有在C4的计算之中,所以最后要加上这一列。

1.7.3  行列隐藏

在使用报表时,常常会遇到这样的情况:例如,用户希望某些数据不显示,或希望只显示某些数据。根据该需求,我们提供了行、列、指定值或条件隐藏的方法来设计报表。

  • 行隐藏:

116图3.46  行隐藏属性示例图

在A4中,添加v-visible:false,表示第四行在报表中不显示。
注意:v-visible:false为行属性,所以需要添加在行的第一个单元格。

117图3.47  行隐藏属性运行结果图

  • 列隐藏:

118图3.48  列隐藏属性示例图

在F1中,添加h-visible:false,表示第F列在报表中不显示。
注意:h-visible:false为列属性,所以需要添加在列的第一个单元格。

119图3.49  列隐藏属性运行结果图

  • 条件隐藏:

120图3.50  条件隐藏属性示例图

在A1中,添加批注v-visible:(RPRODUCTID = ‘1’ or RPRODUCTID = ‘3’) and RCATEGORYNAME =’调味品’,表示显示符合给定条件的数据。
注意:v-visible:false为行属性,所以需要添加在行的第一个单元格。

121图3.51  条件隐藏属性运行结果图

1.7.4  排序与条件过滤

  • 语法:

group/grouph(分组字段, 过滤条件, 排序方式)

select/selecth(关键字段, 过滤条件, 排序方式)

排序方式:field:排序字段;order:{ ascending|descending };type:{ text|number }

  • 说明:

field:需要排序的字段

order:顺序,ascending表示升序,descending表示降序。默认为升序。

type:字段类型,text为文本类型,number为数字类型。

如:产品信息表需要按照产品单价排序,那么我们要在单元格内写:p1.select(p1.ProductName,”,’field:UnitPrice;order:ascending;type:number’)

(第二个参数过滤条件为空,需要写一个’’来占位)

表示按照字段UnitPrice升序排序,字段类型为number型。也可以写成p1.select(p1.ProductName,”,’field:UnitPrice’)。

  • 过滤条件:

如:主从报表的从表定义,e1.group(e1.RORDERID,”,’RORDERID=p1.RORDERID’)

表示自身RORDERID关系要关联p1数据集的RORDERID关系。

1.7.5  报表链接

设计时:

122图3.52  报表链接属性设置图

  • 在C5中,插入批注:html:<a model=”dialog” href=”/demo/report/process/links/reportLinks.w?Company-Name=$RCOMPANYNAME&amp;product-name=$RPRODUCTNAME&amp;process=’/demo/report/process/links/linksProcess’&amp;activity=’reportLinksActivity'” title=”产品明细-{$RPRODUCTNAME}” />
  • 表示弹出标题为产品明细-{$RPRODUCTNAME}的对话框(model=’dialog’),并传入参数Company-Name,product-name。

说明:model为打开链接模式,包括dialog(对话框),replace(替换自身),window(portal)

运行时:

123图3.53  报表链接属性运行结果图

1.7.6   图片链接

设计时:

124

图3.54  图片属性设置图

  • 在G1中,插入批注image:/UI/demo/report/process/simple/images/logo.gif,表示该单元格链接到位于/UI/demo/report/process/simple/images/logo.gif的图片资源。

运行时:

125图3.55  图片属性运行结果图

1.7.7        条形码

设计时:

126图3.56  条形码属性设置图

  • 在C3中,插入批注display-type:barcode、barcode-type:code93,表示该单元格的信息将转换成条形码显示,转换码制为code93。
  • 其它相关批注:barcode-config:{height:’’,mw:’’,wf:’’,qz:’’,hrp:’’,hrfont:’’….}

127

运行时:

128

图3.57  条形码属性运行结果图

1.8  报表运算

1.8.1  合计值

请参考网格报表、分组报表、交叉报表中都进行了计算合计的演示。

1.8.2  平均值

我们以二级分组报表(行统计为例)

设计时:

129图3.58  平均值运算示例图

  • 将F6单元格中的内容修改为=avg(F5),表示计算各个类别产品单价的平均值。

运行时:

130

……

131

图3.59  平均值运算运行结果图

1.8.3  占比

设计时:

132图3.60  占比运算示例图

  • 添加一列H。
  • 在H5中,输入=G5 div G7,表示该单元格的值为G5除以G7的值,即该产品的库存占总库存的百分比。
  • 在H6中,输入=G6 div G7,表示该单元格的值为G6除以G7的值,即该类产品的库存占总库存的百分比。

运行时:

133图3.61  占比运算运行结果图

本文由WeX5君整理,WeX5一款开源免费的html5开发工具H5 App开发就用WeX5!

阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443