範例三:使用子報表設定參數

以下範例是一個 JSP 頁面,示範如何使用子報表設定參數。在參數設定後,便會顯示報表。

注意:    您必須為本教學課程範例中使用的所有報表設定適當的 JDBC 資料來源,這樣應用程式伺服器才能存取這些報表。本範例所使用的報表不包含在教學課程中。

SetParametersWithSubreport.jsp

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

<%@ page import = "com.crystaldecisions.report.web.viewer.*" %>

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

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

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

<%@ page import = "com.crystaldecisions.reports.sdk.ReportClientDocument" %>

<%

try {

Object reportSource = session.getAttribute("reportSource");

  

if (reportSource == null)

{

ReportClientDocument oReportClientDocument = new ReportClientDocument();

oReportClientDocument.open("/SetSubreportParam.rpt", 0);

reportSource = oReportClientDocument.getReportSource();

session.setAttribute("reportSource", reportSource);

}

Fields parameterFields = new Fields();

ParameterField numberParamField = new ParameterField();

numberParamField.setReportName("SubreportA");

Values numberValues = new Values();

ParameterFieldDiscreteValue numParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();

ParameterField stringParamField = new ParameterField();

stringParamField.setReportName("SubreportA");

Values stringValues = new Values();

ParameterFieldDiscreteValue stringParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();

ParameterField booleanParamField = new ParameterField();

booleanParamField.setReportName("SubreportA");

Values booleanValues = new Values();

ParameterFieldDiscreteValue booleanParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();

ParameterField dateParamField = new ParameterField();

dateParamField.setReportName("SubreportA");

Values dateValues = new Values();

ParameterFieldDiscreteValue dateParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();

ParameterField dateTimeParamField = new ParameterField();

dateTimeParamField.setReportName("SubreportA");

Values dateTimeValues = new Values();

ParameterFieldDiscreteValue dateTimeParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();

ParameterField currencyParamField = new ParameterField();

currencyParamField.setReportName("SubreportA");

Values currencyValues = new Values();

ParameterFieldDiscreteValue currencyParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();

ParameterField timeParamField = new ParameterField();

timeParamField.setReportName("SubreportA");

Values timeValues = new Values();

ParameterFieldDiscreteValue timeParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();

Integer numberValue = new Integer("72");

numberParamField.setName("NumberParam");

numParameterFieldDiscreteValue.setValue(numberValue);

numberValues.add(numParameterFieldDiscreteValue);

numberParamField.setCurrentValues(numberValues);

parameterFields.add(numberParamField);

String stringValue = "String parameter value.";

stringParamField.setName("StringParam");

stringParameterFieldDiscreteValue.setValue(stringValue);

stringValues.add(stringParameterFieldDiscreteValue);

stringParamField.setCurrentValues(stringValues);

parameterFields.add(stringParamField);

Boolean booleanValue = new Boolean("true");

booleanParamField.setName("BooleanParam");

booleanParameterFieldDiscreteValue.setValue(booleanValue);

booleanValues.add(booleanParameterFieldDiscreteValue);

booleanParamField.setCurrentValues(booleanValues);

parameterFields.add(booleanParamField);

Calendar calendar = Calendar.getInstance();

calendar.set(2004, 1, 17);

Date dateParamVal = calendar.getTime();

dateParamField.setName("DateParam");

dateParameterFieldDiscreteValue.setValue(dateParamVal);

dateValues.add(dateParameterFieldDiscreteValue);

dateParamField.setCurrentValues(dateValues);

parameterFields.add(dateParamField);

Calendar calendar2 = Calendar.getInstance();

calendar2.set(2002, 5, 12, 8, 23, 15);

Date dateTimeParamVal = calendar2.getTime();

dateTimeParamField.setName("DateTimeParam");

dateTimeParameterFieldDiscreteValue.setValue(dateTimeParamVal);

dateTimeValues.add(dateTimeParameterFieldDiscreteValue);

dateTimeParamField.setCurrentValues(dateTimeValues);

parameterFields.add(dateTimeParamField);

Double currParamVal = new Double(555.99);

currencyParamField.setName("CurrencyParam");

currencyParameterFieldDiscreteValue.setValue(currParamVal);

currencyValues.add(currencyParameterFieldDiscreteValue);

currencyParamField.setCurrentValues(currencyValues);

parameterFields.add(currencyParamField);

Calendar calendar3 = Calendar.getInstance();

calendar3.set(2002, 5, 12, 13, 44, 59);

Date timeParamVal = calendar3.getTime();

timeParamField.setName("TimeParam");

timeParameterFieldDiscreteValue.setValue(timeParamVal);

timeValues.add(timeParameterFieldDiscreteValue);

timeParamField.setCurrentValues(timeValues);

parameterFields.add(timeParamField);

CrystalReportViewer oCrystalReportViewer = new CrystalReportViewer();

oCrystalReportViewer.setReportSource(reportSource);

oCrystalReportViewer.setOwnPage(true);

oCrystalReportViewer.setOwnForm(true);

  

//oCrystalReportViewer.setPrintMode(CrPrintMode.ACTIVEX);

oCrystalReportViewer.setPrintMode(CrPrintMode.PDF);

oCrystalReportViewer.setParameterFields(parameterFields);

if (session.getAttribute("refreshed") == null)

{

oCrystalReportViewer.refresh();

session.setAttribute("refreshed", "true");

}

oCrystalReportViewer.processHttpRequest(request, response, getServletConfig().getServletContext(), null);

}

catch(ReportSDKException sdkEx) {

out.println(sdkEx);

}

%>

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

<%@ page import = "com.crystaldecisions.report.web.viewer.*" %>

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

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

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

<%@ page import = "com.crystaldecisions.reports.sdk.ReportClientDocument" %>

<%@ page import = "com.crystaldecisions.reports.sdk.*" %>

try {

Object reportSource = session.getAttribute("reportSource");

  

if (reportSource == null)

{

ReportClientDocument oReportClientDocument = new ReportClientDocument();

oReportClientDocument.open("/MultipleValueParam.rpt", 0);

reportSource = oReportClientDocument.getReportSource();

session.setAttribute("reportSource", reportSource);

}

Fields parameterFields = new Fields();

ParameterField oParameterField = new ParameterField();

oParameterField.setReportName("");

Values oValues = new Values();

ParameterFieldDiscreteValue oParameterFieldDiscreteValue1 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue oParameterFieldDiscreteValue2 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue oParameterFieldDiscreteValue3 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue oParameterFieldDiscreteValue4 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue oParameterFieldDiscreteValue5 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue oParameterFieldDiscreteValue6 = new ParameterFieldDiscreteValue();

Integer CustomerID2 = new Integer("2");

Integer CustomerID4 = new Integer("4");

Integer CustomerID5 = new Integer("5");

Integer CustomerID6 = new Integer("6");

Integer CustomerID7 = new Integer("7");

Integer CustomerID8 = new Integer("10");

oParameterField.setName("MultipleValueNumberParameter");

oParameterFieldDiscreteValue1.setValue(CustomerID2);

oParameterFieldDiscreteValue2.setValue(CustomerID4);

oParameterFieldDiscreteValue3.setValue(CustomerID5);

oParameterFieldDiscreteValue4.setValue(CustomerID6);

oParameterFieldDiscreteValue5.setValue(CustomerID7);

oParameterFieldDiscreteValue6.setValue(CustomerID8);

oValues.add(oParameterFieldDiscreteValue1);

oValues.add(oParameterFieldDiscreteValue2);

oValues.add(oParameterFieldDiscreteValue3);

oValues.add(oParameterFieldDiscreteValue4);

oValues.add(oParameterFieldDiscreteValue5);

oValues.add(oParameterFieldDiscreteValue6);

oParameterField.setCurrentValues(oValues);

parameterFields.add(oParameterField);

CrystalReportViewer oCrystalReportViewer = new CrystalReportViewer();

oCrystalReportViewer.setReportSource(reportSource);

oCrystalReportViewer.setOwnPage(true);

oCrystalReportViewer.setOwnForm(true);

  

//oCrystalReportViewer.setPrintMode(CrPrintMode.ACTIVEX);

oCrystalReportViewer.setPrintMode(CrPrintMode.PDF);

oCrystalReportViewer.setParameterFields(parameterFields);

if (session.getAttribute("refreshed") == null)

{

oCrystalReportViewer.refresh();

session.setAttribute("refreshed", "true");

}

oCrystalReportViewer.processHttpRequest(request, response, getServletConfig().getServletContext(), null);

}

catch(ReportSDKException sdkEx) {

out.println(sdkEx);

}

%>



Business Objects
http://www.taiwan.businessobjects.com/
支援服務
http://www.businessobjects.com/services/support/