显示格式、显示值
显示格式、显示值
在中设计的报表性别、学历都是用数值显示的,而且奖金等格式也并不美观,那么我们可以在的基础上增加显示格式、显示值等设置,使报表可读性更强
第一步:增加一个数据集 ds2: SELECT DEGREE.ID,DEGREE.NAME FROM DEGREE
第二步:定义表达式:
1、将A2单元格表达式修改为:=ds1.Select(int(EMPID),false)
该表达式是将字符串型的EMPID转换成整数,再做排序操作。
2、设置C2单元格的显示格式为:yyyy年MM月dd日
3、设置F2单元格的显示格式为:¥#0.00
4、设置D2的显示值为:map(list("1","2"),list("男","女"))
5、设置E2的显示值为:ds2.select1(name,id==value())
第三步:保存预览
此报表保存为3.2.raq,预览效果如下图所示:
第四步:发布报表
-
增加数据集
单击菜单栏中的【配置】->【数据集】,在弹出的“数据集设置“窗口中点【增加】按钮,弹出“数据集类型”窗口,如图:
选择“SQL检索”,点【确定】按钮,即可弹出“SQL检索“窗口,接下来可像新建报表时一样定义SQL。
-
Int函数说明
将字符串或数字转换成整数
语法: int( string ) int( number )
参数说明:
string 需要转换的字符串表达式
number 数字,如果带有小数位,转换后小数位被截掉
返回值: 32位整数
示例:
例1:int( "100" ) 返回:100
例2:int( 100.1 ) 返回:100
例3:int(100.9999) 返回:100
-
显示格式
报表运算出来的数据,往往需要按照一定的格式进行展现,例如金额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,否则会导致误差
-
显示格式的设置方法
选中需要设置显示格式的单元格(可以批量选择),双击属性列表中的 显示格式,如下图所示:
双击后,弹出显示格式编辑对话框,如下图所示:
选择相关的显示格式,也可手工敲入,点击确定,显示格式设置完成。
-
显示值:由于业务的需要以及设计数据库的考虑,从数据库事实表中取出来的很多度量字段的值往往是编码,例如员工表的性别字段,往往存的是0或者1,但是在报表中希望显示成 男 或 女
-
虽然编码字段在报表中显示成对应的中文,但是该单元格的真实编码还需要保留,当别的单元格引用该单元格时,引用的是编码而非中文,此时就需要用到单元格的显示值属性
-
单元格的显示值也可以被引用,此时用到disp函数,例如:disp(A1) 代表A1单元格的显示值。
显示值的定义有两种方式:单值和对照表
举例:
单值定义法: 1、例如:"中国",那么该单元格就显示为"中国" 2、例如:ds1.select1(name,value()==id)
对照表定义法: 例如:map(list("0","1"),list("男","女"))
-
特别说明
当对数据集运用过滤条件后确定只剩一条记录时,虽然select和select1的的运算结果一样,但是select1运算效率高,因为他只要找到符合条件的记录,就不继续检索了,而select要检索完所有的记录才返回。考虑到显示值属性的定义里,几乎所有情况都只需要返回一条记录,因此建议大家使用select1,不要使用select
-
map函数说明
显示值对照表函数,从对照表中找出当前单元格对应值的显示值,没有则返回null
语法: map(valueListExp, displayListExp)
参数说明:
valueListExp 真实值列表,可以是可扩展单元格或结果为集合列表的表达式
displayListExp 显示值列表,可以是可扩展单元格或结果为集合列表的表达式 真实值列表和显示值列表一一对应
返回值: 字符型,和当前格真实值对应的显示值
示例:
例1:map(to(1,3),list("男","女","不定"))
例2:map(arg1,arg2) 其中arg1为1,2,3组成的参数组,arg2为"男","女","不定"组成的字符串组
例3:map(list(1,2,3),list("男","女","不定"))
-
Select1函数说明
从数据集中按顺序检索到符合过滤条件的第一条记录,返回其selectExp值
语法: datasetName.select1(selectExp{,filterExp{,rootGroupExp}})
参数说明: selectExp 要选择的字段列名/列号,,也可以是表达式。 列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filterExp 过滤条件 rootGroupExp 是否root数据集表达式
返回值: 数据类型不定,由selectExp的运算结果决定
特别说明: 当对数据集运用过滤条件后确定只剩一条记录时,虽然select的运算结果一样,但是select1运算效率高,因为他只要找到符合条件的记录,就不继续检索了,而select要检索完所有的记录才返回。
示例:
例1:ds1.select1(name) 返回数据集ds1中第一条记录的name字段值
例2:ds1.select1(name,score>90) 从数据集ds1中检索出成绩大于90的记录,返回第一条记录的name字段值
-
Value函数说明
取得当前单元格的值
语法: value()
返回值: 当前单元格的值