如何建立報表來源

在 JSP 頁面中使用匯出控制項或檢視器之前,必須先取得報表來源。

報表來源是代表報表單一執行個體的物件,可供匯出控制項和檢視器使用。Java 報表元件、頁面伺服器和 RAS 均可用來取得報表來源。

若要使用 Java 報表元件建立報表來源,必須知道要檢視或匯出的報表位置。報表位置是藉由使用相對路徑或絕對路徑來指定的。此外,若要 Java 報表元件正確地擷取報表資料,報表的資料來源必須透過 JNDI 正確指定,或者報表必須根據 JDBC 資料來源而設計。

有兩個方法可以使用 Java 報表元件以取得報表來源。第一個 (建議使用) 方法是使用 ReportClientDocument 類別取得報表來源。第二個方法是使用 IReportSourceFactory2 類別。

使用 ReportClientDocument 建立報表來源物件
  1. 確認已經匯入 ReportClientDocument 類別。
  2. import com.crystaldecisions.reports.sdk.ReportClientDocument;

  3. 建立 ReportClientDocument 類別的執行個體。
  4. ReportClientDocument reportClientDoc = new ReportClientDocument();

  5. 呼叫 ReportClientDocument 物件的開啟方法,將其路徑傳到所需報表和目前的地區設定。
  6. String report = "/reports/sample.rpt";
    reportClientDoc.open(report, 0);
    Object reportSource = reportClientDoc.getReportSource();

    注意:    上述程式碼中的報表位置,會根據您使用的是相對或絕對路徑而有所不同。使用相對路徑時,上述報表將解析成 <web_app_dir>/WEB-INF/lib/reports/sample.rpt。使用絕對路徑時,上述報表先解析成 <web_app_dir>/WEB-INF/classes/reports/sample.rpt,然後為 /reports/sample.rpt。

  7. 一旦取得報表來源後,在使用 Java 報表元件時,就必須將報表來源快取於工作階段變數中。
  8. session.setAttribute("reportSource", reportSource);

注意:    本範例所使用的報表不包含在教學課程中。

使用 IReportSourceFactory2 建立報表來源
  1. 確定您已經匯入 JPEReportSourceFactory 類別和 IReportSourceFactory2 介面。
  2. <%@ page import="com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory" %>

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

  3. 建立新的 JPEReportSourceFactory 物件。
  4. IReportSourceFactory2 rptSrcFactory = new JPEReportSourceFactory();

  5. 呼叫 IReportSourceFactory2 物件的 createReportSource 方法,將所要報表的路徑和目前的地區設定傳遞給此方法。
  6. 注意:     String report = "/reports/sample.rpt";

    注意:     Object reportSource = rptSrcFactory.createReportSource(report, request.getLocale());

    注意:    

    注意:    上述程式碼中的報表位置,會根據您使用的是相對或絕對路徑而有所不同。使用相對路徑時,上述報表將解析成 <web_app_dir>/WEB-INF/lib/reports/sample.rpt。使用絕對路徑時,上述報表先解析成 <web_app_dir>/WEB-INF/classes/reports/sample.rpt ,然後為 /reports/sample.rpt

  7. 一旦取得報表來源後,在使用 Java 報表元件 時,就必須將報表來源快取於工作階段變數中。
  8. session.setAttribute("reportSource", reportSource);

注意:    本範例所使用的報表不包含在教學課程中。



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