为你的水晶报表装载本地图片

发布时间:2016-12-9 12:19:00 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"为你的水晶报表装载本地图片",主要涉及到为你的水晶报表装载本地图片方面的内容,对于为你的水晶报表装载本地图片感兴趣的同学可以参考一下。

为你的水晶报表装载本地图片 本文为解答该贴所做:http://topic.csdn.net/u/20090524/15/911fd15a-32c6-4be9-9aa1-3ee95365e7e3.html  并没有什么新内容,主要是如何读取本地图片显示在报表中。 如果是CR XI及以上版本,可以用更简便的方法,参考:水晶报表图片动态加载的另一种简单方案  本文的方法是:水晶报表中如何动态加载图片(图片文件版本及数据库版本) 中的图片文件版本。 本文适用于VS2003及VS2005自带版本的水晶报表,当然同样适用于CR XI及以上版本,就是烦了点。 本文使用VS2005及自带版本的水晶报表。 在这里,我把命题重新提炼一下: 已经有一个完整的报表,现在报表需要加载一个本地磁盘图片做为logo。报表中的logo随着本地图片的变化自动变化。 一般我们通过插入一个pictureobject来插入磁盘图片,但是插入后,图片就成为报表的一份,达不到变化的目的。 1:首先我们已经有了一个单表的完整水晶报表应用    2:为了能挂接我们的本地图片,在dataset里新建立一个表mylogo。 里面放上两个字段,字段类型为System.Byte[]或System.sByte[] 注意,默认类型里只有System.Byte和System.SByte,要自己输入的。 这个mylogo就是一个中介,我们把本地图片读到这个表里,水晶报表从这个表里读到图片显示。 3:在现有报表里加入一个子报表,数据源就是这个mylogo. 把两个字段拖到子报表上。 4:代码段是这样的  1  //设置数据源信息  2         DataSet1 ds1 = new DataSet1();  3         OleDbDataAdapter da = new OleDbDataAdapter();  4         String connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath ("~/app_data/test.mdb")+";";  5         OleDbConnection cn = new OleDbConnection(connstr);  6   7   8         //获取记录集,注意,最终获取的记录集需要与xsd的结构一致!        9         da = new OleDbDataAdapter("SELECT EmployeeId1 as EmployeeId,EmployeeName1 as EmployeeName From Employee1", cn); 10         da.Fill(ds1, "Employee"); 11  12         //把本地图片先写入到数据集 13  14         //将图片读到stream,并转换为byte[] 15         //图片1 16         FileStream fs1 = new FileStream(@"c:\1.bmp", FileMode.Open, FileAccess.Read); 17         BinaryReader br1 = new BinaryReader(fs1);         18         byte[] bt1 = br1.ReadBytes((int)fs1.Length); 19         //图片2 20         FileStream fs2 = new FileStream(@"c:\a2.jpg", FileMode.Open, FileAccess.Read); 21         BinaryReader br2 = new BinaryReader(fs2); 22         byte[] bt2 = br2.ReadBytes((int)fs2.Length); 23          24         fs1.Close(); 25         fs2.Close(); 26         //写入到ds1中(仅1行) 27         ds1.myLogo.AddmyLogoRow(bt1, bt2); 28         29  30         //以上为数据部分,与报表无关 31         //----------------------------------------------------------- 32         //以下为报表部分 33  34         //使用报表对象加载报表 35          36         string reportPath = Server.MapPath("~/app_data/crystalreport1.rpt"); 37         myReport.Load(reportPath); 38         //绑定数据集,注意,一个报表用一个数据集。 39         myReport.SetDataSource(ds1); 40         CrystalReportViewer1.ReportSource = myReport;   5:效果是这样的

上一篇:第一次接触计算机语言的经历
下一篇:tq210 内核移植和根文件系统

相关文章

相关评论