zoukankan      html  css  js  c++  java
  • Crystal Reports CRS方式Web开发

    关于水晶报表以前一直都是用.NET来开发,使用的是RDC方式,简单易用。现在在做项目的时候需要和Crystal Report Server进行连接,登录服务器取得报表,然后显示,Google和baidu,都找不到可参考的完整的例子,只能根据一些零碎的代码,拼凑+自己以前开发水晶报表的经验。
    1.用惯了Struts,新建一个Action,在Action里面添加以下代码:
    String reportName = "<你的报表名称>";
     // TODO Auto-generated method stub
       ISessionMgr ceSessionMgr = CrystalEnterprise.getSessionMgr();
       IEnterpriseSession ceSession = ceSessionMgr.logon("<CRS的用户名>","<CRS的密码>","〈CRS的主机名〉","<用户认证的方式,默认为secEnterprise>");
       IInfoStore ceInfoStore = (IInfoStore)ceSession.getService("","InfoStore");
       IInfoObjects ceReports = ceInfoStore.query("Select SI_ID,SI_NAME From CI_INFOOBJECTS Where SI_NAME = '" + reportName + "'");
       if(ceReports.size() == 0)
       {
        //
        return null;
       }
       IInfoObject reportObject = (IInfoObject)ceReports.get(0);
       IReportSourceFactory factoryPS = (IReportSourceFactory) ceSession.getService("PSReportFactory");
       IReportSource rptSrc = factoryPS.openReportSource(reportObject,Locale.ENGLISH);

       CrystalReportViewer viewer = new CrystalReportViewer();
       viewer.setEnterpriseLogon(ceSession);
       viewer.setName("crystal_report_viewer");
       viewer.setOwnPage(true);
       viewer.setReportSource(rptSrc);
       viewer.showFirstPage();
       
       HttpSession session = request.getSession();
       session.setAttribute("crViewer",viewer);
       return mapping.findForward("result");

    2.跳转result是跳到一个viewer.jsp的页面,该页面也很简单
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>

    <%//Crystal Report Viewer imports.%>
    <%@page import="com.crystaldecisions.report.web.viewer.*"%>

    <%

    //Refer to the Viewers SDK in the Java Developer Documentation for more information on using the CrystalReportViewer
    //API.

    CrystalReportViewer viewer = (CrystalReportViewer)session.getAttribute("crViewer");
    //Render the report.
    viewer.processHttpRequest(request, response, getServletConfig().getServletContext(), null);
    %>

    OK,当然,前提是你需要安装好Crystal Report Server。在使用CRS的时候发现如果是远程登录使用IP地址连不上服务器,使用主机名也认不出来。我的解决办法是在本地的windows目录下system32/drivers/etc/的hosts文件里面添加服务器的IP地址和主机名。我想解决办法应该不是这样的。

  • 相关阅读:
    OpenStack平台监控脚本-基础版
    制作rpm包,可以免除多次编译安装
    openstack安装指南
    服务器状态持续监控脚本
    搭建OpenStack私有云准备工作
    一键配置openstack-cata版的在线yum源
    openstack的yum源出错,配置openstack-ocata版的在线yum源,openstack的yum源配置
    py小结一
    Windows在cmd界面运行C++程序
    数字三角形「动态规划」
  • 原文地址:https://www.cnblogs.com/zjblue/p/474116.html
Copyright © 2011-2022 走看看