水晶报表中如何动态加载图片(图片文件版本及数据库版本) 

开发环境: VS2003(VB.Net) + 水晶报表10高级专业开发版 + Win2003

Step1:数据库文件版本

如果你在数据库中采用了二进制字段存储图片文件
微软 Access 里这些字段叫作 OLE 字段,而Oracle和SQL Server把它们称作 BLOB (二进制大型对象) 字段
那么在报表上显示出来就非常之简单
因为之前我没有做过类似的显示图片文件的报表,等我做出来之后,我自己都乐了
其实对这种二进制形式来说,跟普通的字段是一样的,拖到模板上就行了,呵呵
水晶报表中如何动态加载图片(图片文件版本及数据库版本)

水晶报表中如何动态加载图片(图片文件版本及数据库版本)

Setp2:下面我们来做一下加载磁盘上的图片的程序

其实有了上次《就是先创建一个跟数据库版本一致的报表,当然是使用人见人爱的Ado.Net的方式
自己构造一个DataSet,把本地图片读成二进制流写进去
然后将这个DataSet推给报表就行了

我使用了水晶报表自己带的示例数据库里面的"雇员表"
水晶报表中如何动态加载图片(图片文件版本及数据库版本)

看一下结构,主要是看一下各字段的格式,因为我们在创建DataSet的时候进行对应
水晶报表中如何动态加载图片(图片文件版本及数据库版本)
特别注意下那个图片字段的格式,在VB.Net里我们可以用Byte来与之呼应

模板文件如下,没啥特别
水晶报表中如何动态加载图片(图片文件版本及数据库版本)

代码如下,有详尽注释。

  1水晶报表中如何动态加载图片(图片文件版本及数据库版本)'************************************************************************* 
  2水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**模 块 名:CR_DynLoadPics
  3水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**说 明:Facesun.cn 版权所有2005 - 2006(C) 
  4水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**创 建 人:Babyt(阿泰) http://www.cnblogs.com/babyt 
  5水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**日 期:2005-04-21 
  6水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**修 改 人: 
  7水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**日 期: 
  8水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**描 述:从本地磁盘获取图片文件进行显示
  9水晶报表中如何动态加载图片(图片文件版本及数据库版本)'          本程序为原型程序,未进行完整保护
 10水晶报表中如何动态加载图片(图片文件版本及数据库版本)'**版 本:V1.0.0 
 11水晶报表中如何动态加载图片(图片文件版本及数据库版本)'************************************************************************* 
 12水晶报表中如何动态加载图片(图片文件版本及数据库版本)
 13水晶报表中如何动态加载图片(图片文件版本及数据库版本)Imports System.Data
 14水晶报表中如何动态加载图片(图片文件版本及数据库版本)'注意此处IO的加入是为了读取图片文件
 15水晶报表中如何动态加载图片(图片文件版本及数据库版本)Imports System.IO
 16



运行效果
水晶报表中如何动态加载图片(图片文件版本及数据库版本)

后记1:
我参考了海波的《利用数据集在水晶报表中显示图像的 .NET 程序教程 》
http://blog.csdn.net/haibodotnet/archive/2004/04/12/21570.aspx
里面是用子报表实现的,比较巧妙
大家可以参考一下,其中也有个VB.Net的例子
http://ftp1.businessobjects.com/outgoing/products/Devzone/vbnet_win_DynamicImage.zip

后记2:
经过实验,这个方法只能正常显示BMP/JPG图片,Gif就显示不出来
而且其大小似乎是固定的,不能随着图片的大小自动变化
所以这就要求你的图片尺寸一致

本文中的完整代码请在此处下载
https://files.cnblogs.com/babyt/CR_DynLoadPics.rar


-------Over------------------
希望这篇文章对你有所帮助。
阿泰 200504201

相关文章:

  • 2022-01-22
  • 2021-06-09
  • 2021-06-30
  • 2022-12-23
  • 2021-07-15
  • 2021-09-10
  • 2022-12-23
  • 2021-08-15
猜你喜欢
  • 2022-01-27
  • 2021-04-26
相关资源
相似解决方案