水晶报表显示图片问题(winform)
我数据库里面存放的是图片路径 例如:“c:\test\11.jpg” ,我想让这些图片显示到 水晶报表里去,不知道怎么才能做到。。
看过阿泰的文章。但是我绑定后不能找到他所说的图片那个字段,也就没法拉到水晶报表上。。。
下有这方面经验的朋友大体上给讲讲,,,这个问题我都问好几天了。。。。
谢谢了。。。。。
------解决方案--------------------看我的,哈~~
http://hi.baidu.com/webprince/blog/item/2810b199e0dd58086f068c75.html
------解决方案--------------------怎么可能看见,数据库读图片还要将二进制流转换才可以看见图片
------解决方案--------------------这种情况应该一般都是用的xsd做为报表的数据源,通过以下的步骤解决这个问题:
1、在原有xsd的架构上增加一列imgdata,数据类型为Base64Binary;
2、生成项目,重新指定报表数据源,将imgdata字段放入报表的相应位置;
3、代码中,生成数据集时,查询语句在原来的查询语句基础上增加一个空一字段imgdata如:
select ....,cast(null as image) as imgdata from....,
4、处理数据集,
foreach(DataRow row in MyDataSet.Tables.Rows)
{
FileStream fs = new FileStream(row[ "imgpath "],FileMode.Open);
byte[] buff =new byte[fs.Length];
fs.Read(buff, 0, buff.Length);
fs.Close();
row[ "imgdata "] =buff;
}
5、加载报表
CrystalReport1 rpt = new CrystalReport1();
rpt.SetDataBase(MyDataSet);
this.CrystalReportViewer1.ReportSource=rpt;
或者
CrystalReportDocument rpt = new CrystalReportDocument();
rpt.Load( "../CrsytalReport1.rpt ");//这里的路径为报表文件的绝对路径
rpt.SetDataBase(MyDataSet);
this.CrystalReportViewer1.ReportSource=rpt;
------解决方案--------------------根据文件路径,得到文件,转换为流文件,然后输出即可。