终极解决方案:Crystal report 11以下版本动态显示图片(数据库保存图片路径)
版权声明:欢迎转载,但请注明出处 www.cnblogs.com/alone
环境描述:
SqlServer 2000、Crystal Report(水晶报表)XI 以下版本
引语
水晶报表以其强大的功能占距了强大的开发市场,其打印出的报表美观、大方,深得用户喜爱,然而其某些功能上不免有些瑕疵。例如,当数据库中只存放了图片的路径时,当你在设计报表时,没有提供将其打印成图片的功能,可能水晶报表公司也看到了广大使用者的需要,在新近的Crystal Report XI中添加了对此的支持,请参见:http://www.businessobjects.com/products/reporting/crystalreports/formatting.asp,Dynamic image location标题下有详细的Flash功能演示,我就不详细说明了。但Crystal Report XI以下并未提供该功能,用户只能在数据库中使用image字段保存图片、使用第三方的工具或在程序中处理,然而这三种方式都有不足:
1、建立image字段会使数据库文件变得更大,影响了数据库执行效率,而且在特定的情况下,不能使用image字段保存图片,比如用户希望在更新图片时只需将新的图片文件替换掉旧图片时,这个方法就不好用了;
2、使用第三方的工具,参见http://www.crystalkeen.com/tools/cviewimage.htm,以COM组件的方式从数据库中存储的图片路径中提取实际的图片,内嵌于结果集中,提供给Crystal Report。这个方法也有很多不足,比如:不能支持复杂的数据查询;
3、在程序中处理,VB的代码,我没有深入的研究,大概的原理就是循环表中的picture对象,在程序中更改其源位置,这样,在报表生成之前图片就被替换掉了,这种方法当然不用说了,要Coding了,有兴趣的朋友可以研究一下,交流交流。会不会有限制还不清楚,更主要的问题,如果用户只想通过数据库来提供数据源,这个当然不能满足需求了。
参见:[Crystal Report 8]http://support.businessobjects.com/library/kbase/articles/c2014707.asp
[Crystal Report 9]http://support.businessobjects.com/communityCS/FilesAndUpdates/cr9_vb_rdc_loadpic.exe.asp
详细文章请参见:http://www.cnblogs.com/alone/articles/130201.html