通常我们要在水晶报表里显示文本和数字数据。有时候,数据库里会包含图象数据,并且我们也希望在水晶报表里使用它。有很多途径可以在报表中显示数据驱动的图象
第一要确保图象具有足够的大小和质量。设法在报表里将高质量的大图象显示为简略图是没有意义的。使用图象编辑程序以合适的分辨率及大小创建你能够显示的图象。
图象的格式也很重要。虽然 BMP 是一种相当通用的格式,但是它需要占用巨大的空间。因此,将图象转换为类似 JPG 或者 GIF 的压缩格式是合乎需要的。水晶报表支持所有这些格式。
接下来要解决的问题是如何将图象放入水晶报表。在过去,我们以为唯一的答案是使用数据库途径。但是,还有许多其它途径。让我们看一下其中的三种途径……
1. 数据库解决方案:实现容易,但是需要非常大的磁盘空间。
你可以在数据库字段里存储图象数据。微软 Access 里这些字段叫作 OLE 字段,而 Oracle 和 SQL Server 把它们称作 BLOB (二进制大型对象) 字段。
该技术的一个实例是水晶报表提供的 Xtreme 实例数据库。在“雇员”表里有一个包含雇员照片的字段,名字是“雇员照片”。你只需将这些字段插入报表,与使用其它字段的方式相同。
好的一面,你可以直接将图象字段与数据库数据联系起来。不好的一面,这些图象将占用相当大的数据库空间。这意味它们也会对性能和存储有不利影响。
2. 开发者解决方案:功能有限并且需要一个开发人员。
在一些水晶报表图书里,我们读到了如何用编程语言(比如:Visual Basic)写一个水晶报表查看器。在程序里,你能够捕获类似“格式化节”这样的事件,然后改变报表里的 OLE 对象以加载不同的图象。
好的一面,这可以让你松散耦合数据和图象。不好的一面,这需要开发复杂的程序,而且它只能与特定的报表一起使用。我们正在考虑开发这种查看器,直到偶然碰见了如下两种技术。最近,我们听说在水晶报表 9 里这些格式化事件对开发者将不可用。
3. 驱动器解决方案:快速灵活的第三方产品。
水晶报表 8 和 9 里有一个伟大的特性就是你可以使用 COM 数据源。这意味着你能够用程序代码创建记录集,然后把它用作报表的数据源。
我们开发了 cViewIMAGE (http://www.crystalkeen.com/tools/cviewimage.htm),一个可以从任何 ODBC 表里读取三个字段(标识符,描述和图象的文件名)的 COM 数据源。该 COM 数据源将创建第四个字段,包含文件名对应的图象。在子报表里使用它可以显示图象。
该方案的最大好处在于整个记录集被装入内存,因此可以快速加载和处理图象,而且对于使用那些图象和数据库字段,它也很灵活。它只需要一个 ODBC 数据源。
不好的一面,它需要进行一些初始化设置以定位图象,但是我们已经使驱动器足够灵活,因此使你能够支持多种配置。我们甚至可以创建扩充版本以包含表里的其它全部字段。让我们知道这样做是否有价值。
4. 分发解决方案:安装 UFL(用户功能库)既简单又便宜。
另外一种解决方案就是导出到 HTML,使用我们的 SMTP用户功能库 (User Function Library) (http://www.crystalkeen.com/tools/mailfunctionlibrary_smtp.htm)。我们还有其它一些用户功能库,可以将输出发送到 Outlook,XML 或者磁盘文件。有些人把这称作“报表脉冲”,在这里你的报表引擎使用功能库生成多种输出文件。
目前我们有一个 SMTP 库可以在报表处理时将图象嵌入 HTML 消息。这是我们的 SMTP 库的一个标准功能。
本文地址:http://com.8s8s.com/it/it45159.htm