分頁組態

產品中的各種資料總管區域都支援設定分頁的功能,讓使用者可以使用「上一個」和「下一個」按鈕或連結,來「逐頁瀏覽」大量的結果。

當您嘗試設定此功能時,有好幾個區域參數會受到影響。下列步驟說明分頁組態的設定方式。

  • 您必須設定啟用分頁參數,才能定義區域分頁的基本設定。此參數會定義您要將「上一個」和「下一個」動作定義成按鈕、連結,還是圖示,同時指出動作的執行位置。它也能讓您指出,是否不用將額外的資料列顯示在新的「頁面」上,只要附加在原有的頁面上即可。如需特定語法的相關資訊,請參閱該參數的內嵌說明。

  • 建議藉由適當地設定記錄數目顯示參數,讓區域擁有記錄數目和頁面資訊。如需特定語法的相關資訊,請參閱該參數的內嵌說明。

  • 請設定要擷取的 SQL 資料列數參數,以便定義每個頁面顯示的記錄數。如果您沒有指定此參數,系統會使用要顯示的資料列數參數中的值。

  • 請設定要用來分頁的索引鍵,讓系統可以追蹤「分頁」的情況。資料必須依分頁索引鍵排序;因此,識別分頁索引鍵必須考慮到區域的設計,以及要顯示的資料。此外,分頁索引鍵必須是唯一的,以確保系統能正確地分頁。請參閱下方的組態設定範例。

    • SQL 陳述式必須根據分頁索引鍵,包含額外的 PAGENEXTPAGEPREV 子句。此外,如上所述,您必須在 ORDER BY 子句中使用分頁索引鍵。

    • SQL 資料欄參數必須定義要與 SQL 陳述式分頁子句一起使用的分頁索引鍵記憶碼。

    • 建議您設定 SQL 顯示資料欄參數,依照與 ORDER BY 子句相同的順序來顯示資料。

下列區域類型支援此功能:

  • 資訊資料總管 - 單一 SQL (F1-DE-SINGLE)。

  • 資訊資料總管 - 多個 SQL (F1-DE)。請注意,此類型的區域支援所有 SQL 陳述式之結果的聯集。因此,如果使用單一 SQL,就只能為此類型的區域啟用分頁功能。因為系統無法跨不同的 SQL 陳述式來追蹤分頁。

  • 查詢資料總管 - 多個 SQL (F1-DE-QUERY)。

  • 多重查詢資料總管 (F1–DE-MULQRY)。此類型的區域不包含 SQL 陳述式或資料欄顯示的組態。然而,它們的確包含啟用分頁的組態。您必須設定此參數,才能讓個別區域中的分頁正常運作。

備註:

用於業務服務的區域。請注意,當系統透過業務服務來叫用資料總管區域時,會忽略分頁的設定。在此情況下,區域會根據「資料列數」參數所定義的值,傳回第一個「區塊」的資料列。

具有資料視覺化選項的區域。將視覺化選項定義為以圖形形式顯示資料的區域不支援分頁。

範例

簡單分頁索引鍵

在此範例中,「可延伸查尋值」定義為資料欄 1 (C1),且標示為分頁索引鍵。此欄位對資料表而言是唯一的,且適合當作簡單分頁索引鍵。

SELECT A.F1_EXT_LOOKUP_VALUE,A.BUS_OBJ_CD
FROM 
  F1_EXT_LOOKUP_VAL A, 
  F1_EXT_LOOKUP_VAL_L B
WHERE 
A.BUS_OBJ_CD = :H1
AND A.BUS_OBJ_CD = B.BUS_OBJ_CD
AND A.F1_EXT_LOOKUP_VALUE = B.F1_EXT_LOOKUP_VALUE
AND B.LANGUAGE_CD = :LANGUAGE
[(F1) AND UPPER(A.F1_EXT_LOOKUP_VALUE) like UPPER(:F1)]
[(F2) AND ((UPPER(B.DESCR_OVRD) like UPPER(:F2))
OR (B.DESCR_OVRD = ' ' AND UPPER(B.DESCR) like UPPER(:F2)))]
[(PAGENEXT) AND A.F1_EXT_LOOKUP_VALUE > :C1]
[(PAGEPREV) AND A.F1_EXT_LOOKUP_VALUE < :C1]
ORDER BY A.F1_EXT_LOOKUP_VALUE

複雜分頁索引鍵

然而,大多數查詢不會依唯一值來排序。在此情況下,您必須根據查詢的排序來設定分頁索引鍵,且該分頁索引鍵必須包含唯一的欄位 (例如主索引鍵),作為上一個分頁索引鍵。在此範例中,查詢會顯示依待辦事項類型、角色和使用者排序的結果。所有欄位都會標示為分頁索引鍵,包含待辦事項 ID (主索引鍵)。

SELECT TD_TYPE_CD, ROLE_ID, ASSIGNED_TO, ASSIGNED_DTTM, TD_PRIORITY_FLG, TD_ENTRY_ID
FROM  CI_TD_ENTRY
WHERE 
ENTRY_STATUS_FLG IN ('O', 'W')
[(F1) and TD_TYPE_CD = :F1]
[(F2) AND ASSIGNED_TO = :F2]
[(F3) AND ROLE_ID = :F3]
[(PAGENEXT) and ((TD_TYPE_CD>:C1) or (TD_TYPE_CD=:C1 and ROLE_ID>:C2) or (TD_TYPE_CD=:C1 and ROLE_ID=:C2 
and ASSIGNED_TO>:C3) or (TD_TYPE_CD=:C1 and ROLE_ID=:C2 and ASSIGNED_TO=:C3 AND TD_ENTRY_ID>:C4))] 
[(PAGEPREV) and ((TD_TYPE_CD<:C1) or (TD_TYPE_CD=:C1 and ROLE_ID<:C2) or (TD_TYPE_CD=:C1 and ROLE_ID=:C2 
and ASSIGNED_TO<:C3) or (TD_TYPE_CD=:C1 and ROLE_ID=:C2 and ASSIGNED_TO=:C3 AND TD_ENTRY_ID<:C4))] 
ORDER BY TD_TYPE_CD, ROLE_ID, ASSIGNED_TO, TD_ENTRY_ID