我使用VS2005开发WEB系统,需要打印报表,如果想使用Reporting Service 2005,但调试到打印时,出现自定义纸张21*14,宽超过高时,就出现自动横向页,强制纵向打印就失真了,无办法,只好放弃,使用VS2005自带的水晶报表,我放到三四级目录时,调试老是提示“加载报表失败。”不知为合,我已经搜索过相关文章需要用相关路径改为"../../xxx/xxx"时,在CrystalReportViewer控件内可正常阅览,但调试在WEB中打开就提示“加载报表失败”,郁闷,新建立一个项目,将所有东西都放到项目根目录一且正常,不知为和,现在就是将PrintMode="ActiveX"后,点打印按钮弹出一个摸态窗,但毫无反应,也不提示安装ActiveX,这回是真不知道为什么了,但如果是打印为PDF是正常弹出,也是正常打印出PDF,晕,希望用过的高手门给个提示,谢谢。

解决方案 »

  1.   

    试过新建立一个项目,空的,都放在根目录,所以绝对不会是路径问题,就是不提示安装ActiveX,停在那里,哪谁碰到过,有解决办法呀,谢谢。
      

  2.   

    问题解决,找到原因了,有两个原因
    不知道是不是巧合,前两天因深圳有小地震,说是光缆坏了,访问国外网站有点慢。
    不知道为什么水晶报表不把ActiveX提供给用户自已放到自已服务器下载,一定要链接到他的服务去下载,导致我很久连接不上,搞得ActiveX安装失败。
    还有就是不知道是不是我安了IE的原因,说IE权限不够,不能安装,我将权限都打开,再将ActiveX用迅雷下载回来放到本地,自已写代码安装后成功了。希望大家有帮助。
      

  3.   

    微软MSDN给的答案使用 ActiveX 控制項列印在 Crystal Reports 的更新版本中,您可以使用新的 CrystalReportViewer.PrintMode 屬性來指定列印模式。其中包含兩個列舉型別:ActiveX 和 PDF。 當屬性設定為 PrintMode.PDF 時,報表會在 Web 伺服器上匯出為 PDF,然後以資料流傳送到瀏覽器。使用者可以利用選項,直接列印至印表機。這個選項是跨平台相容的。 
    當屬性設定為 PrintMode.ActiveX 時,ActiveX 列印控制項允許使用者將報表直接列印至本機印表機。 
    注意   在 Crystal Reports for Visual Studio 2005 中,為符合 Microsoft 安全性需求起見,並沒有將 ActiveX 列印控制項安裝在本機電腦上。而是必須製成 .cab 檔案,讓人從外部 URL 來存取。PrintControl.cab 檔案可以從 Business Objects 技術支援網站下載取得,這時就可以將 cab 檔案放在 Web 伺服器虛擬目錄中,以供 URL 存取之用。
    若要在 Crystal Reports for Visual Studio 2005 網站顯示 cab 檔案,請將下列 xml 加入網站的 web.config 檔案:
    <configSections>
      <sectionGroup name="businessObjects">
        <sectionGroup name="crystalReports">
          <section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" />
        </sectionGroup>
      </sectionGroup>
    </configSections><businessObjects>
      <crystalReports>
        <printControl>
          <add key="url" value="http://myserver/PrintControl.cab" />
        </printControl>
      </crystalReports>
    </businessObjects>
    注意   只有 Internet Explorer 才會支援 ActiveX 控制項。若從非 Internet Explorer 的用戶端 (FireFox、Safari、Mozilla 等) 列印,將會回復到 PDF 匯出對話方塊。===========================================================================
    经过我的测试,是IE升级了补丁,对摸态窗的安全加强了,所以就算你将文件放到本地服务器估计也安装失败,除非你自已写代码连续弹出两次摸态窗,才会提示安装。所以完全可以将他的CAB下载回来放到本地服务器,然后写下面代码放到一个单独的页面放用户先安好。<object id="CrystalPrintControl" classid="CLSID:BAEE131D-290A-4541-A50A-8936F159563A" codebase="http://127.0.0.1/rpt/PrintControl.cab" #Version="10,2,0,1078" viewastext></object>#Version是版本号,如果你是其他的版本将版本号修改一下即可。
      

  4.   

    楼上的说的很对,用他最后的方法就可以实现在指定地点安装插件,但是不用新建个页面安装,就把上面的<object>标签加在报表浏览页的<head>中就可以,插件会先采集信息,如果安装过它就不会再弹出了!!