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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值