Crystal Report for Java
426429Jul 29 2004 — edited Jul 29 2004Hi everyone,
I have a JSP,
<FORM name="ReportForm" method="POST" action="http://webcrdev:8085/ReportViewer/viewer.jsp"> <input name="reportName" type="HIDDEN" value="ClaimD"/> <INPUT name="<fieldname1>" type="HIDDEN" value="<value1>"/> <INPUT name="<fieldname2>" type="HIDDEN" value="value2"/></FORM>
and then is viewer.jsp:
<%@ page import="com.crystaldecisions.sdk.framework.IEnterpriseSession, com.crystaldecisions.sdk.occa.infostore.IInfoStore, com.crystaldecisions.sdk.occa.managedreports.IReportSourceFactory, org.apache.log4j.Logger, java.util.Properties, java.util.Enumeration, com.crystaldecisions.sdk.framework.CrystalEnterprise, com.crystaldecisions.sdk.occa.infostore.IInfoObjects, com.crystaldecisions.sdk.occa.report.data.ParameterFieldDiscreteValue, com.crystaldecisions.sdk.occa.infostore.IInfoObject, com.crystaldecisions.report.web.viewer.CrystalReportViewer, com.crystaldecisions.sdk.occa.report.reportsource.IReportSource, java.util.Locale, com.crystaldecisions.sdk.occa.report.data.Fields, com.crystaldecisions.sdk.occa.report.data.Values, com.crystaldecisions.sdk.occa.report.data.ParameterField, com.crystaldecisions.report.web.viewer.CrPrintMode, com.crystaldecisions.report.web.viewer.ReportServerControl"%><%! IEnterpriseSession enterpriseSession ; IInfoStore iStore ; IReportSourceFactory reportSourceFactory ;%><% //Login information String userName = "<user-name>"; String password = "<password>"; String aps = "<servername>"; String auth = "secEnterprise";//authentication type //Login and get reports base on report's name enterpriseSession = CrystalEnterprise.getSessionMgr().logon(userName,password,aps,auth); iStore = (IInfoStore) enterpriseSession.getService("InfoStore"); reportSourceFactory = (IReportSourceFactory) enterpriseSession.getService("PSReportFactory"); //Query report object using report's name String reportName = request.getParameter("reportName"); String query = "Select SI_ID, SI_NAME from CI_INFOOBJECTS where SI_NAME = '" + reportName + "'"; IInfoObjects result = iStore.query(query); IInfoObject report = (IInfoObject) result.get(0); //Create Crystal Report Viewer CrystalReportViewer viewer = new CrystalReportViewer(); IReportSource reportSource = reportSourceFactory.openReportSource(report,Locale.ENGLISH); viewer.setReportSource(reportSource); //Pass in parameters //All parameters are passed in from client with names are exactly the same with params' names in report Fields tmpFields = viewer.getParameterFields(); for(int i = 0; i < tmpFields.size(); i++) { paramValue = request.getParameter(((ParameterField)tmpFields.getField(i)).getName()); Values val = new Values(); ParameterFieldDiscreteValue pfieldDV = new ParameterFieldDiscreteValue(); pfieldDV.setValue(paramValue); val.add(pfieldDV); ((ParameterField)tmpFields.getField(i)).setCurrentValues(val); ((ParameterField)tmpFields.getField(i)).setDefaultValues(val); } viewer.setPrintMode(CrPrintMode.ACTIVEX); viewer.setReuseParameterValuesOnRefresh(true); viewer.setHasLogo(false); viewer.setHasSearchButton(false); viewer.setHasRefreshButton(true); viewer.setOwnForm(true); viewer.setOwnPage(true); viewer.setEnableDrillDown(true); viewer.setDisplayGroupTree(false); viewer.setDisplayToolbar(true); viewer.setEnableParameterPrompt(false); viewer.refresh(); viewer.setBestFitPage(true); viewer.processHttpRequest(request, response, getServletConfig().getServletContext(), out); viewer.dispose();%>
After report is shown, user click on the report toolbar (export, print, nextpage, prevpage, etc.), it's show error: not enough parameters.
If with the same code but without parameter, It's run OK.
Anyone help me?
Thanks in advanced!
Nguyen Hung Linh.