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地址和主机名。我想解决办法应该不是这样的。

  • 相关阅读:
    java初学
    数据库命名及设计规范(转)
    转-ASP.NET页面之间传递值
    程序员个人职业规划
    如何学习别人的代码(转)
    可映射的CSV读取引擎
    iTween扩展
    Unity3d中NGUI加强版血条(Healthbar)的制作
    Unity3D中寻路Navmesh的简单介绍
    多人网络(Valve开发文档翻译[起源引擎])(一)
  • 原文地址:https://www.cnblogs.com/zjblue/p/474116.html
Copyright © 2011-2022 走看看