目录

显示格式、显示值

一、报表实例

在上节设计的“运货信息表1”中,运货商是用数值显示的,而且运货费、日期的格式也不美观,我们可以在此表的基础上增加显示格式、显示值等设置,使报表“运货信息表2”的可读性更强。

二、设计过程:

第1步:打开报表

在“资源中心”界面将“运货信息表1”【另存为】“运货信息表2”,点【修改】打开报表。

第2步:增加一个数据集

引用数据集“演示_运货商”

 

第3步:编辑报表

1. 设置B2、F2单元格的显示格式为:yyyy年MM月dd日

选中B2、F2单元格,在报表属性栏的“显示格式”栏或菜单工具栏的【显示格式】-【日期风格】中设置。

 

2. 设置C2的显示值为:demo_运货商.select1(COMPANYNAME,SHIPPERID==value())

选中C2单元格,在报表属性栏的“显示值”栏或菜单工具栏的【编辑】-【显示值】中设置。
    

“显示值”和“表达式编辑”窗口如下图所示:


    3. 设置D2单元格的显示格式为:¥#0.00

选中D2单元格,在报表属性栏的“显示格式”栏或菜单工具栏的【显示格式】-【货币风格】中设置。

4. 设置标题栏为绿底白字

选中第1行,在报表属性栏的“前景色”和“背景色”栏中设置。

第4步:保存预览

此报表保存为“运货信息表2”,预览效果如下图所示:

第5步:打印导出

三、小结

1. 显示格式

报表运算出来的数据,往往需要按照一定的格式进行展现,例如,金额1234.5678希望显示成¥1,234.56,日期2005/12/25希望显示成2005-12-25,百分比0.2345希望显示成23.5%等等。
    虽然对数据的显示格式有一定的要求,但是单元格里真实的数据不能改变,照样能够被其他单元格引用,例如1234.5678虽然显示成1,234.56,但是其他单元格引用时,引用的是1234.5678而不是1,234.56,否则会导致误差。
    显示格式的设置方法:

(1) 选中需要设置显示格式的单元格(可以批量选择),双击属性列表中的 显示格式,如下图所示:

(2) 双击后,弹出“显示格式设置”对话框,如下图所示:

(3) 选择相关的显示格式,也可以人工输入,点击【确定】,显示格式设置完成。

(4) 也可以在菜单工具栏的【显示格式】下设置:

2. 显示值

由于业务的需要以及设计数据库的考虑,从数据库事实表中取出来的很多度量字段的值都是编码,例如:员工表的性别字段,往往存的是0或者1,但是在报表中希望显示成“男”或“女”。

虽然编码字段在报表中显示成对应的中文,但是该单元格的真实编码还需要保留,当别的单元格引用该单元格时,引用的是编码而非中文,此时就需要用到单元格的显示值属性。

单元格的显示值也可以被引用,此时用到disp函数,例如:disp(A1) 代表A1单元格的显示值。

显示值的定义有两种方式:单值和对照表

单值定义法:

例1:"中国",那么该单元格就显示为"中国"

例2:ds1.select1(name,value()==id)

对照表定义法:

例:map(list("0","1"),list("男","女"))

3. 特别说明

当对数据集运用过滤条件后确定只剩一条记录时,虽然select()和select1()的的运算结果一样,但是select1()运算效率高,因为他只要找到符合条件的记录,就不继续检索了,而select()要检索完所有的记录才返回。考虑到显示值属性的定义里,几乎所有情况都只需要返回一条记录,因此建议大家使用select1(),不要使用select()。

四、函数说明

1. select1()

函数说明: 从数据集中,按顺序检索到符合过滤条件的第一条记录,返回选择的字段值

语法: datasetName.select1(selectExp{,filterExp{,rootGroupExp}})

参数说明:

selectExp 要选择的字段列名/列号,或表达式,列号用#n表示,例如:#0代表第0列,#1代表第1列,依此类推

filterExp 过滤条件

rootGroupExp 是否root数据集表达式,为true,从数据集里取数,为false, 则从本单元格主格的结果集里取数

返回值: 数据类型由selectExp的运算结果决定

特别说明:当对数据集运用过滤条件后,确定只剩一条记录时,虽然同select()的运算结果一样,但是select1()运算效率高,因为它只要找到符合条件的记录,就不继续检索了,而select()要检索完所有的记录才返回。

示例:

例1:ds1.select1(name) 返回数据集ds1中第一条记录的name字段值。

例2:ds1.select1(name,score>90) 从数据集ds1中检索出成绩大于90的记录,返回第一条记录的name字段值。

2. value()

函数说明: 取得当前单元格的值

语法: value()

返回值: 当前单元格的值

 示例:

例1:if(value()=="1","男","女") 表示如果当前格的值为"1",返回"男",否则返回"女"。

例2:if(value()>100,-65536,value()<=100 and value()>80,-16776961,-14336 ) 表示当前格的值大于100时,返回-65536颜色值,当前格的值小于等于100且大于80时,返回-16776961颜色值,否则返回-14336颜色值。

3. disp()

函数说明: 取得某单元格的显示值

语法: disp(cell)

参数说明:

cell 单元格

返回值: 字符型

示例:

例:if(like(disp(A1), "中国*"),true,false) 表示如果A1单元格的显示值含有中国的字样,返回true,否则返回false。

4. map()

函数说明: 显示值对照表函数,从对照表中找出当前单元格对应值的显示值,没有则返回null

语法: map(valueListExp, displayListExp)

参数说明:

valueListExp 真实值列表,可以是可扩展单元格或结果为集合列表的表达式。

displayListExp 显示值列表,可以是可扩展单元格或结果为集合列表的表达式 真实值列表和显示值列表一一对应。

返回值: 字符型,和当前格真实值对应的显示值

示例:

例1:map(to(1,3),list("男","女","不定")) 单元格的值为1、2、3时,显示值分别为“男”、“女”、“不定”。

例2:map(arg1,arg2) 其中arg1为1,2,3组成的参数组,arg2为"男","女","不定"组成的字符串组,单元格的值为1、2、3时,显示值分别为“男”、“女”、“不定”。

例3:map(list(1,2,3),list("男","女","不定")) 单元格的值为1、2、3时,显示值分别为“男”、“女”、“不定”。