显示格式、显示值
一、报表实例
在上节设计的“运货信息表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时,显示值分别为“男”、“女”、“不定”。