如何建立報表來源

在 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,再解析為 <web_app_dir>/WEB-INF/lib/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 ,再解析為 <web_app_dir>/WEB-INF/lib/reports/sample.rpt。

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

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






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