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>  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值