管理及程式設計指南

報表區塊

REPORT 區塊可用來顯示 FUNCTION 區塊所輸出的資料並加以格式化。 雖然您所指定的可能是文字、巨集變數參照與函數呼叫等任何有效的組合, 但一般來說,此種輸出類型通常是套表資料。 您可以選擇在 REPORT 區塊中指定表格名稱。 除了 SQL 及 ODBC 語言環境之外,您未指定表格名稱,則 Net.Data 將使用來自 FUNCTION 參數列示中第一個輸出表格的表格資料。

REPORT 區塊是由三個可選用的部份所組成:

範例:

%REPORT{
<h2>Query Results</h2>
<p>Select a name for details.
<table border=1>
  <tr>
    <td>Name</td>
    <td>Location</td></tr>
%ROW{
  <tr>
    <td>
<a href="/cgi-bin/db2www/name.d2w/details?name=$(V1)&loc;=$(V2)">$(V1)</a>
    </td>
    <td>$(V2)</td>
  </tr>
  %}
</table>
%}

REPORT 區塊指南

當建立 REPORT 區塊時,請使用下列指南:

範例:自行設定報表

下面的範例說明如何使用特殊變數及 HTML 標籤,來自行設定報表格式。 它會在表格 CustomerTbl 中,顯示姓名、電話號碼、以及傳真號碼:

%DEFINE SET_TOTAL_ROWS="YES"
...
%FUNCTION(DTW_SQL) custlist() {
     SELECT Name, Phone, Fax FROM CustomerTbl
%REPORT{
<i>Phone Query Results:</i>
<br />
=====================
<br />
%ROW{
Name: <b>$(V1)</b>
<br />
電話: $(V2)
<br />
傳真: $(V3)
<br />
------------------------------
<br />
    %}
    取回的記錄總數:$(TOTAL_ROWS)
  %}
%}

查詢報表在瀏覽器中看來如下:

電話查詢結果:
====================
姓名: Doen, David
電話:422-245-1293
傳真:422-245-7383
------------------------------
姓名: Ramirez, Paolo
電話:955-768-3489
傳真:955-768-3974
------------------------------
姓名:Wu, Jianli
電話:525-472-1234
傳真:525-472-1234
------------------------------
取回的記錄總數:3

Net.Data 會以下列方式來產生報表:

  1. 在報表開頭列印一次電話查詢結果:。 此本文以及區隔符號行均是 REPORT區塊的標題部份。
  2. 在取回的每一橫列上,對變數 V1V2V3, 分別以「姓名」、「電話」及「傳真」的值來置換它們。
  3. 在報表尾端列印一次字串取回的記錄總數:TOTAL_ROWS 的值。 (這個本文是 REPORT 區塊的註腳部份。)

多個 REPORT 區塊

您可以在單一 FUNCTION 或 MACRO FUNCTION 區塊內, 設定多個 REPORT 區塊,建立多個具有一個函數呼叫的報表。

一般而言,您將搭配 DTW_SQL 語言環境與多個 REPORT 區塊一起使用,而這個語言環境具有一個函數, 可呼叫會傳回多個結果集合的儲存程序 (請參閱儲存程序)。 不過,多個 REPORT 區塊可與任一語言環境一起用來建立多個報表。

若要使用多個 REPORT 區塊,請將結果集合名稱置於每一結果集合的儲存程序 CALL 之上。 如果從儲存程序傳回的結果集合的數目比您設定的 REPORT 報表區塊數目還要多, 且如果 Net.Data 內建函數 DTW_DEFAULT_REPORT = "MULTIPLE", 將對與 REPORT 區塊沒有關聯的每一結果集合建立預設報表。 如果未設定任何報表區塊, 且如果 DTW_DEFAULT_REPORT = "YES",將僅建立一個預設報表。 請注意,僅適用於 SQL 語言環境,DTW_DEFAULT_REPORT 值 "YES" 等於 "MULTIPLE" 的值。

範例

下列範例描述您可以用哪些方式使用多個報表區塊。

使用預設報表格式顯示多個報表:

範例 1:DTW_SQL 語言環境

%DEFINE DTW_DEFAULT_REPORT = "MULTIPLE"
%FUNCTION(dtw_sql) myStoredProc  () {
     CALL myproc (table1, table2)  %}

在這個範例中,儲存程序 myproc 傳回兩個結果集合, 置於 table1table2 中。 因為未設定任何 REPORT 區塊, 將顯示的這兩個表格為預設報表,首先 table1,然後 table2

範例 2: MACRO_FUNCTION 區塊。 在這個範例中,這兩個表格會傳遞到 MACRO_FUNCTION 區塊。 指定 DTW_DEFAULT_REPORT="MULTIPLE" 之後,Net.Data 會產生這兩個表格的報告。

%DEFINE DTW_DEFAULT_REPORT = "MULTIPLE"
%MACRO_FUNCTION multReport (INOUT tablename1, tablename2) { 
%}

在這個範例中,這兩個表格會傳遞到 MACRO_FUNCTION multReport。 再一次,Net.Data 會依據這兩個表格出現在 MACRO FUNCTION 區塊參數列示中的次序, 來顯示它們的預設報表,首先 table1,然後 table2

範例 3:DTW_REXX 語言環境

%DEFINE DTW_DEFAULT_REPORT = "YES"
%FUNCTION (dtw_rexx) multReport (INOUT table1, table2) {
     SAY 'Generating multiple default reports...<br />'   
%}

在這個範例中,這兩個表格會傳遞到 REXX 函數 multReport。 因為設定了 DTW_DEFAULT_REPORT="YES", 所以 Net.Data 僅會顯示第一個表格的預設報表。

經由設定要進行顯示處理的 REPORT 區塊來顯示多個報表:

範例 1:已命名的 REPORT 區塊

%FUNCTION(dtw_sql) myStoredProc  () {
   CALL myproc (table1, table2)
 
  %REPORT(table2) { 
     ...    
    %ROW {  ....   %}   
     ...
   %}
   
   %REPORT(table1) {     
     ...
    %row {  ....   %} 
     ...
   %}
%}

在這個範例中,已對 FUNCTION 區塊參數列示中傳遞的這兩個表格設定了 REPORT 區塊。 表格會依據它們在 REPORT 區塊上設定的次序來顯示,首先 table2, 然後 table1。經由在 REPORT 區塊上設定表格名稱,您可以控制報表的顯示次序。

範例 2:沒有名稱的 REPORT 區塊

%FUNCTION(dtw_sql) myStoredProc  () {
     CALL  myproc   
   
%REPORT {
     ...    
    %ROW {  ....   %}  
     ...
   %} 
%REPORT {    
     ...    
    %ROW {  ....   %}     
     ...  
   %}  
%}

在這個範例中,已對 FUNCTION 區塊參數列示中傳遞的這兩個表格設定了 REPORT 區塊。 因為沒有在 REPORT 區塊上設定任何表格名稱,所以會依據這兩個表格從儲存程序傳回的次序, 來顯示它們的報表。

使用預設報表與 REPORT 區塊的結合來顯示多個報表:

範例:預設報表與 REPORT 區塊的結合

%DEFINE DTW_DEFAULT_REPORT = "MULTIPLE"
%FUNCTION(dtw_system) editTables (INOUT table1, table2, table3) {  
  %REPORT(table2) {    
    ...      
    %ROW {  ....   %}    
    ...   
  %}    
%}

在這個範例中,僅會指定一個 REPORT 區塊。 因為區塊指定 table2,且 table2 是 CALL 陳述式上列示的第二個結果集合, 所以將使用第二個結果集合來顯示報表。 因為設定的 REPORT 區塊的數目少於從儲存程序傳回的結果集合數目, 所以將顯示剩餘的結果集合的報表:首先顯示第一個結果集合的預設報表 table1, 然後顯示第三個結果集合的預設報表 table3。 指定一個輸出表格 table1 之後,該表格可用於巨集中的處理。

多個 REPORT 區塊的指南與限制

在 FUNCTION 或 MACRO_FUNCTION 區塊時設定多個 REPORT 區塊時, 請使用下列指南與限制。

準則:

限制:


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]