JSP E CRYSTAL reports

0 respostas
S

Instalar o Crystal Reports 9.
Instalar o Crystal Enterprise 9.

Dentro de tomcat\webapps\root\web-inf criar uma pasta chamada lib.
Copiar para dentro dessa pasta as classes do Crystal que estão em Arquivos de Programas\Arquivos Comuns\Crystal Decisions\2.0\jars.

Copiar o diretório crystalreportsviewers que está em Arquivos de Programas\Arquivos Comuns\Crystal Decisions\2.0\ e colocar em tomcat\webapps\root.

Ao rodar a aplicação, caso de erro dizendo que não consegue compilar a classe jsp.

Copiar o arquivo tools.jar que está na pasta lib do jdk para a pasta tomcat\common\lib.

Quando o RAS estava iniciado dava um erro com o JBoss, era preciso iniciar primeiro o JBoss e depois o RAS.

Agora a página JSP que chama o relatório.

<%@ page language="java" %>
<%@ page import="com.crystaldecisions.report.web.viewer.*" %>
<%@ page import="com.crystaldecisions.sdk.occa.report.application.*" %>
<%@ page import="java.util.Locale" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Locale" %>
<%@ page import="java.lang.String" %>
<%@ page import="javax.servlet.http.HttpSession" %>
<%@ page import="com.crystaldecisions.sdk.occa.report.data.*" %>
<%@ page import="com.crystaldecisions.sdk.occa.report.exportoptions.ReportExportFormat" %>
<%@ page import="java.io.*" %>
<%@ page contentType="text/html; charset=ISO-8859-1" %>

<html>
<head>
<title>Teste</title>
</head>
<body>

<%
	String serverRas = "localhost";//nome ou ip do computador onde o RAS está instalado
	String path = "rassdk://relatorio";//diretório onde estão os relatórios
	String NomeRel = "relatorio.rpt";//nome do relatório
	
	ReportClientDocument clientDoc = new ReportClientDocument();

	ReportAppSession ra = new ReportAppSession();
	ra.createService("com.crystaldecisions.sdk.occa.report.application.ReportClientDocument");
	// Indica o servidor que está o cristal reports
	ra.setReportAppServer(serverRas);
	ra.initialize();
	clientDoc.setReportAppServer(ra.getReportAppServer());
	clientDoc.open (path + NomeRel, OpenReportOptions._openAsReadOnly);

	/*	//essa parte do código pode ser usada para fazer uma outra conexão com a base de dados
		Table newTable = (Table)((Table)clientDoc.getDatabaseController().getDatabase().getTables().getTable(0)).clone(true);
		ConnectionInfo ci = (ConnectionInfo)((Table)newTable.clone(true)).getConnectionInfo();
		ci.setKind(ConnectionInfoKind.DBFile);
		newTable.setConnectionInfo(ci);
		newTable.setName(arquivo);
		clientDoc.getDatabaseController().setTableLocation(clientDoc.getDatabaseController().getDatabase().getTables().getTable(0),newTable);
		clientDoc.refreshReportDocument();
	*/
	
	/*//esse trecho é usado para inserir um valor em um campo parametrizado.
		ParameterField tempParam = new ParameterField();
		ParameterFieldDiscreteValue novoValorParamDiscreto = new ParameterFieldDiscreteValue();
		ParameterFieldController paramController;
		Fields paramCollection = clientDoc.getDataDefinition().getParameterFields();
		ParameterField ParametroTexto = (ParameterField)paramCollection.getField(0);
		novoValorParamDiscreto.setValue("Texo para campo do relatório parametrizado");
		Field temp = (Field)paramCollection.getField(0);
		temp.copyTo(tempParam,true);
		tempParam.getCurrentValues().add(novoValorParamDiscreto);
		paramController = clientDoc.getDataDefController().getParameterFieldController();
		paramController.modify(ParametroTexto,tempParam);
	*/

	CrystalReportViewer viewer = new CrystalReportViewer();
	viewer.setName("Crystal_Report_Viewer");
	viewer.setOwnPage(true);
	viewer.setBestFitPage(true);
	viewer.setDisplayGroupTree(false);
	viewer.setDisplayGroupTree(false);
	viewer.setHasViewList(false);	
	viewer.setReportSource(clientDoc.getReportSource());
	viewer.processHttpRequest(request, response, (getServletConfig()).getServletContext(),out);
	viewer.dispose();

%>
</body>
</html>
Criado 28 de janeiro de 2005
Respostas 0
Participantes 1