需要注意的是,若是文本框内输入的是数字或是日期,可以利用格式化字符串的方式来更新文本框的“Format”属性,以转换成指定数字或日期的格式。这个部分想必各位并不陌生,因为之前的范例中已经利用“C0”字符串格式来调整销售金额的显示格式了,以下我们针对字符串格式做更深入的介绍。 格式化字符串 说明 C或c
显示操作系统中地区选项所设置的货币格式,包含千分位以及小数点 D或d
显示十进制数字,不包含千分号。位数不足前方补零,只支持整数格式 E或e
以科学计数显示数字,可指定小数位数 F或f
显示十进制数字,不包含千分号,可以指定小数位长度,不足者补零 G或g
以科学计数显示数字,不可指定小数位数 N或n
数字,包含千分位符号 P或p
百分比,可指定小数位数,含千分位 X或x
十六位数字,只支持整数数据
除了少数像是D、G或是X这类只支持整数格式的字符串之外,大多数的字符串格式同时可以指定小数点的精确位数。指定小数位数的方法很简单,只需要在字符串后直接接上要指定的小数位数即可。举例来说,我们希望数值变成小数下两位的货币格式,那么就只要将Format属性设为C2即可。
关于数值格式的设置,可以参考如下: 格式化字符窜 原始数据 结果 d8
1234
00001234 f4
1234.56
1234.5600
除了以上的常用字符串格式之外,也可以定制字符串: 定制数值字符串格式化 格式 #
代表数值位数 0
代表数值固定位数 .
小数点 ,
千分号 %
百分比符号
举例来说,如果我们希望数值保留千分位符号,且小数点下两位,则此时就要在Format属性中填入=”#,###.##”,此时,原来数值“1233.567”就会被格式化为“1,233.57”。格式化字符串“#”与“0”之间最大的差别在于,如果使用“#”,当位数不足时,并不会自动补齐,而如果使用“0”,则会在不足位数之处补零。举例来说,数值“1233.5”的Format设为=”#,###.###”时,则呈现结果为“1,233.5”;但若是Format设为=”0,000.000”时,则呈现结果为“1,233.500”。此外要注意的是,如果是使用默认常见字符串格式,只要直接在Format属性输入格式化字符串即可,如果是使用定制字符串格式时,必须在开头加上等号,同时字符串前后加上双引号。
日期的格式化就显得更加复杂,因为涉及以符号显示还是以文字显示的问题。以下是默认常用的日期字符串格式。 日期格式化字符串 说明 d
简单日期 D
完整日期(完整年月日) t
简单时间(时分) T
完整时间(时分秒) f
完整日期时间(完整年月日) F
完整日期时间(完整年月日,时间到时分秒) g
一般日期时间 G
一般日期时间(时间到时分秒) R或r
RFC1123格式
日期格式化字符串呈现的结果: 格式化字符串 原始数据 结果 d
2004/7/19 下午 10:07:21
2004/7/19 D
2004/7/19 下午 10:07:21
2004年7月19日 t
2004/7/19 下午 10:07:21
下午10:07 T
2004/7/19 下午 10:07:21
下午10:07:21 f
2004/7/19 下午 10:07:21
2004年7月19日 下午10:07 F
2004/7/19 下午 10:07:21
2004年7月19日 下午10:07:21
除了使用基本的日期格式化字符串之外,还可以使用定制日期字符串格式来显示时间。 定制日期字符串格式 格式 D
日期 Dd
日期,不足二位数者前方补零 Ddd
星期几 Dddd
星期几完整名称 M
月份 MM
月份,不足二位数者补零 MMM
完整月份名 Y
年份 Yyyy
完整公元年份
举例来说,我们希望日期格式显示“2011-01-01”的话,就只要在Format属性处输入=”yyyy-MM-dd”即可。如果要显示的是“2004/1/1”,则要将Format的表达式改写为=”yyyy/M/d”。
除此之外,还有两个文本框属性会影响到日期格式的显示,那就是Calendar以及Language。Calendar属性是会自动将日期转换成指定国家历法的对应年份。而Language影响的范围则是使用者操作系统的地区设定,来显示地区定制的格式。
请注意,Calendar的设置会受到Language所影响。举例来说,当Language设为“中文(简体)”时,Calendar属性就不得设为“Japan”。如果希望设置特殊国家的历法时,必须事先将Language设置为正确的语言。
在新增“文本框”时,我们会发现默认的大小是固定的,若想改变“文本框”的大小,可直接拖放“文本框”的边框来调整,或是利用属性窗口的“Size”属性的“Width”与“Height”来设置,使用属性设置比较可以确保文本框的大小以便排列整齐。
当文本框内呈现的是数据库字段内容或计算后产生的结果时,通常都无法预期数据内容的长度是否会超过“文本框”的大小,此时,可将“CanGrow”属性设置为“True”,“文本框”会随着其中的内容横向扩展,而高度将会保持原状不会改变。相反的,也有可能显示的文字内容小于“文本框”,大部分情况下,都会让“文本框”维持原状。但如果在特别的情况下,将“CanShrink”属性设为“True”,可达到自动缩小“文本框”宽度的效果。 线条
线条(Line)可说是在报表单元中最单纯,容易上手的,除了可以放置在页面上任何地方,还可以随心所欲的拖放,斜放、垂直或水平的形式来梅花报表或用作为报表标题与正文的分割线,但比较遗憾的是目前***S还无法画出弯曲的线条。
与一般绘图工具相同的是,“线条”是由“起点(Location)”和“终点(EndPoint)”属性来定义它的位置,并且可以通过“LineColor”、“LineWidth”、“LineStyle”外观属性改变线条的颜色、粗细、样式,例如:实线(Solid)、虚线(Dashed)或点(Dotted)让线条更为活泼美观。
此外,“线条”的长度无法随着报表大小的改变而动态延伸,必须再以手动方式做调整,因此,如果想要使用“线条”做为报表标题的底线,建议设定“文本框”的“BorderStyle”属性,会比使用“线条”来得方便许多。
以刚才的徐杂费缴费单为例,我们可以利用虚线来设定缴费单的分割线,同时搭配文字方块以呈现缴费单所需的各项说明信息。 矩形
在***S中,矩形(Rectangle)除了作为装饰报表的图形元素外,还可以用来放置其他报表单元,不仅可将单元组化,当多个文本框或其他报表单元同时需要在报表中变换位置时,只需要移动一个“矩形”就能达到此效果,更有助于版面的编排。
“矩形”的属性中大多属于外观设置,其中“PageBreak”属于比较特殊的属性,利用其“Start”、“End”或“StartAndEnd”属性,可强制在报表中加入换页的效果。例如,我们在刚才的学杂费缴费单的矩形(列表一定会伴随着矩形)中设置“PageBreak”属性为“End”,就可以让学杂费单一张变成一页。 图像
在制作商务报表时,除了会使用文字内容之外,图形内容也是不可或缺,尤其是大多数的企业报表都希望能放入公司Logo或是说明图片,除了单纯的图像之外,也可以用来作为背景图或水印。因此,***S贴心地提供了“图像(Image)”报表单元,让报表可以经由图片使得内容更为丰富、生动。
***S的“Image”支持.BMP、.JPEG、.GIF和.PNG四种图像格式,并且提供多种图像来源,包括:
n 内嵌在报表中的图像(Embedded Image)。
n 从数据库读取的图像(Database Image)。
n 外部的图像URL。
以下将针对各种图像模式的操作过程进行说明。 内嵌
内嵌(Embedded Image)顾名思义是将图像嵌入报表中。使用内嵌图像时,报表设计器会以MIME(Multipurpose Internet Mail extension)的形式来编码图像,并且在报表定义文档(.rdl)将“Image”储存为文字。如此即可将所有图像的数据储存在报表定义中。使用内嵌图像的好处是,可以确保报表随时都能使用图像,但缺点是该图像文件只有这个报表可以使用,无法和其他报表共享,并且也会使报表定义的大小增加。
设置内嵌图像的步骤很简单,首先,从工具箱中拖拉“Image”至报表设计区域,此时,弹出的对话框中的“General”标签页将“select the image source”选择“Embedded”选项,可在“Use this image”处指定图像的路径,或是利用“Import…”功能将图像导入项目中,即可完成设置。
当项目加入图像之后,待拖拉新的图像之后,将“Select the image source”设为“External”,即可在“Use this image”的下拉菜单中看到刚才加入项目的图像名称,选择此图像即可引用到项目内。
另一种外部图像使用方式则是使用URL存取网络服务器上的图像文件。在报表中希望使用网络上的图像时,只需在“Use this image”区域直接输入链接到图像的URL地址(例如:/image1.jpg">http://<servername>/image1.jpg)即可,不过请注意,有些网站会设置安全性策略禁止外部盗链图片,如果有限制其实会造成引用图像失败。 数据库
前面介绍了内嵌与外部两种图像来源的使用方式,这两种图像来源比较适合在加入少量的图片文件到报表时使用,但是当文件数量较多,或是希望利用参数动态修改对应图片内容时,比较建议将图片先以二进制的方式储存到数据库中。
如何将图像存储到数据库中?
可以使用以下语法来将图像更新至图像列:
UPDATE 表
SET 图像列 =(
SELECT * FROM OPENROWSET(
BULK ‘图像路径’, SINGLE_BLOB)AS A)
WHERE …
当拖拉图像至报表设计区时,首先,将“Select the image source”改为“Database”,并在“Use this field”下拉菜单选择要使用的二进制字段,接下来,请指定该二进制编码的MIME类型,如image/jpeg。