天天看点

java中获取水晶报表

我用水晶报表9做的,这是个共通页面,前面把生成好的SQL文传过来,由共通页面连接数据库执行SQL文,从而生成新的报表!  

  <%@   page   language="java"   pageEncoding="MS932"   %>  

  <%@   page   import="java.util.*"%>  

  <%@   page   import="com.crystaldecisions.sdk.occa.report.application.*"%>  

  <%@   page   import="com.crystaldecisions.sdk.occa.report.data.*"%>  

  <%@   page   import="java.sql.*"%>  

  <%@   page   import="oracle.jdbc.OracleDriver"%>  

  <html>  

  <head>  

  <title>Begin   Here   -   Simple   Preview   Report</title>  

  </head>  

  <body>  

  <%  

  //   

  String   path   =   request.getRealPath("/");  

  int   lastIndex   =   path.lastIndexOf("//");    

  path   =   path.substring(0,   lastIndex)   +   "//";  

  String   reportName   ="RPT/"+request.getParameter   (   "reprotName"   );  

  %>  

  <%  

  //  

  ReportAppSession   ra   =   new   ReportAppSession();  

  //

  ra.createService("com.crystaldecisions.sdk.occa.report.application.ReportClientDocument");  

  //   

  ra.setReportAppServer("127.0.0.1");  

  //      

  ra.initialize();  

  //      

  ReportClientDocument   clientDoc   =   new   ReportClientDocument();  

  clientDoc.setReportAppServer(ra.getReportAppServer()   );  

  //      

  clientDoc.open(path   +   reportName,   OpenReportOptions._openAsReadOnly);  

  %>  

  <%  

  //   

  String   dataBaseName   =   (String)request.getSession().getServletContext().getAttribute("DataBaseName");  

  //   

  String   userName   =   (String)request.getSession().getServletContext().getAttribute("UserName");  

  //   

  String   passWord   =   (String)request.getSession().getServletContext().getAttribute("PassWord");  

  //   

  String   kikName   =   (String)request.getSession().getServletContext().getAttribute("KikName");  

  //   

  DriverManager.registerDriver(new   OracleDriver());  

  java.sql.Connection   connection   =   DriverManager.getConnection("jdbc:oracle:thin:"+userName+"/"+passWord+"@"+kikName+":1521:"+dataBaseName);  

  Statement   statement   =   connection.createStatement();  

  String   sqlStatement=new   String(request.getParameter   (   "sql"   ).getBytes("iso-8859-1"),"Shift_JIS");  

  StringTokenizer   sqlString   =   new   StringTokenizer   (sqlStatement   ,   "@"   )   ;  

  int   j   =   0;  

  while   (sqlString.hasMoreTokens   ()   )   {  

  String   sqlS   =   sqlString.nextToken   ()   ;  

  ResultSet   results   =   statement.executeQuery(sqlS);  

  clientDoc.getDatabaseController().setDataSource(results,  

                                                                                          clientDoc.getDatabase().getTables().getTable(j).getName(),  

                                                                                          "Reports");  

                  j=j+1;                                                                    

  }  

  %>  

  <%  

  //   

  String   jyouken=new   String(request.getParameter   (   "jyouken"   ).getBytes("iso-8859-1"),"Shift_JIS");  

  StringTokenizer   kamoku   =   new   StringTokenizer   (jyouken   ,   "@"   )   ;  

  int   i   =   0;  

  while   (kamoku.hasMoreTokens   ()   )   {  

  String   s   =   kamoku.nextToken   ()   ;  

  s   =   s.replace   (   '☆'   ,   '~'   )   ;  

  ParameterField   tempParam   =   new   ParameterField();  

  ParameterFieldDiscreteValue   newDiscreteValue   =   new   ParameterFieldDiscreteValue();  

  ParameterFieldController   paramController;  

  //   

  Fields   paramCollection   =   clientDoc.getDataDefinition().getParameterFields();  

  ParameterField     stringParamToChange   =   (ParameterField)   paramCollection.getField(i);  

  newDiscreteValue.setValue(s);  

  Field   temp   =   (Field)paramCollection.getField(i);  

  temp.copyTo(tempParam,   false);  

  tempParam.getCurrentValues().add(newDiscreteValue);  

  i=i+1;  

  paramController   =   clientDoc.getDataDefController().getParameterFieldController();  

  paramController.modify(stringParamToChange,   tempParam);  

  }  

  %>  

  <%  

  //   

  session.setAttribute("oClientDoc",   clientDoc);  

  //   

  response.sendRedirect("CrystalReportsInteractiveViewer.jsp");  

  %>  

  </body>  

  </html>