随笔-0  评论-3  文章-28  trackbacks-0

在(一)中的配置保持不变,前一篇是用crviewer标签来实现jsp显示水晶报表的

这篇文章教你如何自己写代码来享受水晶报表的

report_source.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%//Crystal Java Reporting Component (JRC) imports.%>
<%-- jrcerom.jar--%>
<%@page import="com.crystaldecisions.reports.sdk.*" %>
<%-- rascore.jar--%>
<%@page import="com.crystaldecisions.sdk.occa.report.lib.*" %>

<%
//水晶报表的位置
final String REPORT_NAME = "view_report.rpt";
%>

<%

try ...{    
    
//打开报表
     ReportClientDocument reportClientDoc = new ReportClientDocument();
     reportClientDoc.open(REPORT_NAME,
0);

    
//把报表源放进session,传递到报表显示页面
     session.setAttribute("reportSource", reportClientDoc.getReportSource());
        
    
//转到报表显示页面
     response.sendRedirect("CrystalReportViewer.jsp");
        
}

catch(ReportSDKException ex) ...{    
     out.println(ex);
}

catch(Exception ex) ...{
     out.println(ex);            
}

%>

上面的可以封装到javabean里面

reportClientDoc.getDatabaseController().logon(USERNAME, PASSWORD);

设置数据库的登陆用户,如果浏览这个报表的用户需要设置不同的权限的话,那就需要设置上面这个了

CrystalReportViewer.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%//Crystal Report Viewer imports.%>
<%-- webreporting.jar--%>
<%@page import="com.crystaldecisions.report.web.viewer.*"%>
<%-- rascore.jar--%>
<%@page import="com.crystaldecisions.reports.sdk.*" %>

<%
//建立一个viewer对象实例,并设置
CrystalReportViewer viewer = new CrystalReportViewer();
viewer.setOwnPage(
true);
viewer.setOwnForm(
true);
viewer.setPrintMode(CrPrintMode.ACTIVEX);

//从session中取报表源
Object reportSource = session.getAttribute("reportSource");
viewer.setReportSource(reportSource);

//显示水晶报表
viewer.processHttpRequest(request, response,this. getServletConfig().getServletContext(), null);

%>

第二种方法直接用一个页面

CrystalReportViewer.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%//Crystal Java Reporting Component (JRC) imports.%>
<%-- jrcerom.jar--%>
<%@page import="com.crystaldecisions.reports.sdk.*" %>
<%-- rascore.jar--%>
<%@page import="com.crystaldecisions.sdk.occa.report.lib.*" %>
<%-- webreporting.jar--%>
<%@page import="com.crystaldecisions.report.web.viewer.*"%>

<%
//水晶报表的位置
final String REPORT_NAME = "view_report.rpt";
%>

<%
try ......{    
    
//打开报表
     ReportClientDocument reportClientDoc = new ReportClientDocument();
     reportClientDoc.open(REPORT_NAME,
0);

    
//把报表源放进session,传递到报表显示页面
    
//session.setAttribute("reportSource", reportClientDoc.getReportSource());

    
//建立一个viewer对象实例,并设置
     CrystalReportViewer viewer = new CrystalReportViewer();
     viewer.setOwnPage(
true);
     viewer.setOwnForm(
true);
     viewer.setPrintMode(CrPrintMode.ACTIVEX);

    
//从session中取报表源
    
//Object reportSource = session.getAttribute("reportSource");
    
//viewer.setReportSource(reportSource);
     viewer.setReportSource(reportClientDoc.getReportSource());

    
//显示水晶报表
      viewer.processHttpRequest(request, response,this. getServletConfig().getServletContext(), null);

        
    
//转到报表显示页面
    
//response.sendRedirect("CrystalReportViewer.jsp");      
}

catch(ReportSDKException ex) ......{    
     out.println(ex);
}

catch(Exception ex) ......{
     out.println(ex);            
}

%>

个人感觉第一种方法好,报表源跟显示分开,安全,重用方便

posted on 2008-03-28 16:47 阅读(569) 评论(1)  编辑  收藏 所属分类: java基础

评论:
# re: 使用eclipse在jsp上显示水晶报表(二)后台代码例子(转载) 2011-03-31 11:58 | 刘文
54fd  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: