<%@ page import= "java.net.*,
 com.crystaldecisions.sdk.occa.report.data.*,
 com.crystaldecisions.sdk.occa.report.data.Filter,
 com.crystaldecisions.report.web.*,
 com.crystaldecisions.sdk.occa.report.application.*,
 com.crystaldecisions.sdk.occa.report.reportsource.*,
 com.crystaldecisions.report.web.viewer.*,
 com.crystaldecisions.sdk.occa.report.lib.*"
%>
<% 
String reportDirectory = "c:\\your_report_directory";
// ** Userid of database **
String uid = "your_user_id";
// ** Password of database **
String pwd = "your_pass_word";// Declare the Server Control
ReportServerControl serverControl = new ReportServerControl();// Declare the ReportClientDocument
ReportClientDocument clientDoc = new ReportClientDocument();// Declare the Connection Infos object
ConnectionInfos connInfos;// Declare the Connection info object
IConnectionInfo iConnInfo;/********************************************************************************************
 * Opening the Report Client Document
 ********************************************************************************************/
// Here we set the ReportClientDocument's ReportAppServer.  try {
String rasServerName = "0.0.0.0"; // ReportAppServe ip address
// Set the Report Application Server for the ReportClientDocument object
clientDoc.setReportAppServer(rasServerName); } catch(ReportSDKException e) {

out.println(e);
}
CrystalReportInteractiveViewer viewer = new CrystalReportInteractiveViewer();
   try {
           clientDoc.open(reportDirectory+"report_info.rpt", OpenReportOptions._openAsReadOnly);
} catch(Exception e) {
  out.println("Can not open the report serverl, please check the server.");
  out.println(e);
       }
    clientDoc.getDatabaseController().logon(uid,pwd);
     viewer.setReportSource(clientDoc.getReportSource());
     viewer.setHasLogo(false);
     viewer.setHasViewList(true);
     viewer.setBestFitPage(true);
     viewer.setDisplayPage(true);
    viewer.setDisplayGroupTree(false);
    viewer.setDisplayToolbar(false);
viewer.setHasPrintButton(true);
viewer.setHasExportButton(true);
    viewer.setOwnPage(false);
    viewer.setEnableDrillDown(false);
    viewer.setHasHeaderArea(false);
    viewer.setSelectionFormula("your_module_info");
    viewer.setEnableLogonPrompt(false);
    viewer.setEnableParameterPrompt(true);
    viewer.refresh();
    viewer.processHttpRequest(request, response, getServletConfig().getServletContext(), null);%>

解决方案 »

  1.   

    可以用JavaCellReport  http://www.javatoolsoft.com/cn
    你只需要在JSP拼凑URL就可以了..
      

  2.   

    项目中只能用Crystal Report9,:(
      

  3.   

    <%!
      public ParameterField newStringParameterField(String name,String value) throws Exception{
        ParameterField field = new ParameterField();
        Values vals = new Values();
        ParameterFieldDiscreteValue val = new ParameterFieldDiscreteValue();
        field.setName(name);
        val.setValue(value);
        field.setReportName("");
        val.setDescription("");
        vals.add(val);
        field.setCurrentValues( vals );
        return field;
      }
    %>
    <%!
       public ConnectionInfos newConnectionInfos(String user,String password) throws Exception{
        ConnectionInfos infos = new ConnectionInfos();
        IConnectionInfo con = new ConnectionInfo();
        con.setUserName(user);
        con.setPassword(password);
        infos.add(con);
        return infos;
      }
    %>
    <%
        ......    ParameterField caseIDField = newStringParameterField("caseID",caseID);
        ParameterField entpCodeField = newStringParameterField("entpCode",entpCode);
        Fields fields = new Fields();
        fields.add(caseIDField);
        fields.add(entpCodeField);
        viewer.setEnableParameterPrompt(false);
        viewer.setParameterFields( fields );
        viewer.refresh();
        ......
    %>