我在公司(公司的机器是有连入互联网的)编好水晶报表代码,用的是ActiveX模式,在本机运行,第一次运行提示安装ActiveX控件,安装后,一切正常,能正常打印.
但拿到客户那边运行,一闪而过,连提示安装ActiveX控件也没有,再点"打印图标"也是没反应.后来想想区别,也就是一个上互联网,一个不上,但代码在公司所有的机器运行都正常.
为了验证区别,细心研究了公司里的机器,ActiveX控件到底产生了什么文件,而且是放在那,后来发现,在C分区的WINDOWS文件夹里的"Downloaded Program Files"存放着两个文件.就是"PrintControl.inf"和"PrintControl.dll".当我删了它们,运行报表,立刻提示我再安装ActiveX控件,我安装后,又能正常使用.而且"PrintControl.inf"和"PrintControl.dll".重新安装在里边.由此得知,这两个文件是控制我的报表打印的,
为了还原客户的故障,我先将这两个文件删除,再拔下网线.得到的结果,就跟客户那边一样.
问题的症结是找到了,但怎么解决,客户那边是无论如何也不能上网的。
解决方法是:
1.先下载"PrintControl.cab"
http://support.businessobjects.com/CRforVS2005/PrintControl.cab。
2.然后配置好IIS.
3.然后在IIS默认根目录下建一个文件夹.如:TEMP
4.把"PrintControl.cab"放到"TEMP"里边去.
5.然后到"C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/ASP.NETClientFiles/CrystalReportWebFormViewer4/html"这个地址里找到一个叫"crystalprinthost.html"文件.
6.用记事本打开这个文件,找到"objectTag += window.dialogArguments.codebase;"然后将它注释掉.
改为objectTag += "http://本机IP地址/temp/PrintControl.cab";最后保存.
那么问题就会解决了!记得测试时,拔了网线,以验证成功.
写一个html文件,自动安装ActiveX控件,这样报表就可以在本地打印了
把"PrintControl.cab"放到"TEMP"里边去.设置一下IIS
<html>
<object id="CrystalPrintControl" classid="CLSID:83A3D1E4-ADC6-434D-9B61-B8CBA6183441"
codebase="http://127.0.01/temp/PrintControl.cab" version="10,5,1,2285"
viewastext>
</object>
</html>
http://topic.csdn.net/u/20091103/15/a6cef2fc-922c-4831-83f9-085a41f69871.html
http://blog.csdn.net/jirigala/archive/2009/11/11/4800524.aspx