跳轉到

程式資訊

  • 程式 IDTWORKZCOND
  • 所屬子系統:A.系統資料
  • 狀態:stable

自訂條件別(瀏覽條件樣板)

功能簡介

「自訂條件別」用來替每一支資料表單的資料瀏覽器(按下單據上的「瀏覽」「查詢」時跳出的條件視窗)量身打造可篩選的欄位清單預設條件組合

換句話說,使用者在各單據按下「瀏覽 / 查詢」後,條件面板上「能挑哪些欄位來篩、欄位用什麼輸入元件、有沒有預先排好的條件組合可選」都是在這支表單裡定義的。它屬於 A.系統管理 的系統層樣板,通常由系統管理員或導入顧問維護。

一筆主檔代表一組「瀏覽類別 × 單據別 × 瀏覽辨識碼(B 瀏覽 / D 查詢)」的樣板,底下掛三類明細:

  1. 預設條件組合(明細一):替這個類別命名好幾組常用條件,使用者在瀏覽面板可從下拉直接選用。
  2. 欄位定義(明細二):列出此類別瀏覽面板可挑選的欄位,並指定其輸入元件、條件式、遮罩等。
  3. Pivot 報表清單(明細三):把此類別連結到對應的樞紐分析(pivot)報表檔。

與「預設條件值」「舊版自訂條件別」的關係

本表單只管「有哪些欄位可篩、有哪幾組條件名稱」;真正每一組條件「欄位用什麼運算子、值是多少」是在 預設條件值(A-110) 維護。兩支搭配使用。 另外系統內還有一支同樣顯示為「自訂條件別 / A-100」的舊版 ZCOND,畫面與本表單幾乎相同但以 ProgramClass.ZCOND 區分;新導入請以本頁(TWORKZCOND)為準,詳見欄位連動與附加功能

前置需求

  • 權限:A.系統管理 → A-100 自訂條件別 的新增 / 修改 / 刪除 / 瀏覽權限。
  • 基礎資料 / 環境:本表單的設定要能生效並挑到正確欄位,需要先具備下列條件——
資料 影響什麼
目標單據的資料表 / View(資料表名稱 右側「取得欄位」按鈕從這張表的 syscolumns 抓出可挑欄位
目標查詢用的預存程序(選填,與資料表名稱二擇一) 「取得欄位」改以預存程序回傳的欄位集合為來源
語言版本主檔(語系設定) 欄位顯示名稱、預設條件組合說明會依語言版本翻譯
該單據的 ProgramClass 名稱(單據別填入) 瀏覽器以「單據別 + 瀏覽辨識碼」回頭比對這份樣板

存檔後要重開瀏覽器才生效

本表單存檔時會即時重整環境的「自訂條件欄位」暫存表(自訂條件欄位1)。但已開著的瀏覽 / 查詢面板不會即時刷新——請關掉再重新開啟該單據的瀏覽器,新欄位與條件組合才會出現。

操作步驟

新增一筆條件樣板

  1. 按工具列 新增。系統會清空畫面、建立一筆空白主檔,並把焦點移到 瀏覽類別 欄位。
  2. 輸入 瀏覽類別(主鍵,最長 5 碼)。這是這份樣板的識別代號。
  3. 輸入 單據別:填目標單據的 ProgramClass 名稱(例如某張單據的程式代號),瀏覽器日後就是用它來找回這份樣板。
  4. 瀏覽辨識碼B=瀏覽用、D=查詢用(新增時預設帶 B)。
  5. 語言版本
  6. 視需要填三類明細(見下方各步驟),完成後按 儲存

瀏覽類別與單據別必填

存檔時若 瀏覽類別單據別 任一為空白,系統會擋下並提示先輸入,無法存檔。

維護「欄位定義」(決定瀏覽器能篩哪些欄位)

可以手動逐列輸入,也可用右上角的工具一次帶入:

  1. 在右上 資料表名稱 輸入目標資料表 / View 名稱(或改在 預存程序 輸入預存程序名稱,兩者擇一)。
  2. 取得欄位,左側清單會列出該表 / 程序的所有欄位。
  3. 從左側挑欄位移到右側(TwoListBox),按確定後,這些欄位會自動追加到下方「欄位定義」格線:
    • 欄位編號 依序自動編號。
    • 欄位 帶入原始欄位名。
    • 欄位說明 自動把英文欄名依大寫字母拆字加空白當預設說明,可再手改。
  4. 逐列補上 條件式 / 函數 / 物件 / 遮罩 / 欄位type(各欄意義見欄位連動與附加功能)。

維護「預設條件組合」(讓使用者下拉選現成條件)

  1. 在左下「預設條件」格線新增列。
  2. 預設編號預設說明(類別名稱)。同一個「單據別 + 瀏覽辨識碼」下可建立多組,瀏覽面板會把它們做成下拉供使用者選。
  3. 顯示名稱 欄為唯讀,是系統依語言版本翻譯後的結果。

維護「Pivot 報表清單」

  1. 在最下方格線新增列。
  2. 編號 / 語言版本 / 名稱 / 檔名單據別 / 瀏覽辨識碼 兩欄唯讀,會在存檔時自動帶入主檔值。

修改 / 刪除 / 查詢

  • 修改:用導覽列翻到某筆樣板後直接改欄位,按 儲存
  • 刪除:明細列只要把判斷用的關鍵欄(欄位定義看 欄位、預設條件看 預設編號、pivot 看 編號)清空,存檔時該列即被標記刪除。
  • 查詢:用工具列瀏覽 / 翻頁功能依瀏覽類別找回樣板。

欄位說明

主檔

欄位 必填 說明/格式/預設
瀏覽類別 主鍵,最長 5 碼;存檔必填,空白會被擋下
單據別 目標單據 ProgramClass 名稱,最長 60;瀏覽器用它回比樣板
瀏覽辨識碼 B=瀏覽、D=查詢;下拉來源固定 B/D,新增時預設 B
語言版本 TsCobLanguage 控件選;影響欄位說明與條件組合翻譯

明細一:預設條件組合

欄位 必填 說明
預設編號 該條件組合代號;清空=該列存檔時被刪除
預設說明(類別) 條件組合名稱,最長 40
顯示名稱 唯讀 依語言版本翻譯後的顯示文字(ZCOND 翻譯表)

明細二:欄位定義

欄位 必填 說明
欄位編號 自動 存檔時依列順序重新編號(1,2,3…)
欄位 實際資料表欄名;清空=該列存檔時被刪除
欄位說明 瀏覽面板顯示的中文欄名;「取得欄位」帶入時自動拆英文大寫加空白
顯示名稱 唯讀 依語言版本翻譯後的顯示文字
條件式 套用此欄時自動附加的 SQL 條件片段,最長 254
函數 取值時套用的函數,最長 20
物件 輸入元件型態,下拉:空白 / Search / Date
遮罩 輸入遮罩,最長 80
欄位type 欄位資料型別代碼,1 碼

明細三:Pivot 報表清單

欄位 必填 說明
編號 pivot 列代號
語言版本 下拉選語系
名稱 pivot 報表名稱;清空=該列存檔時被刪除
檔名 pivot 報表檔名,最長 120
單據別 唯讀 存檔時自動帶主檔值
瀏覽辨識碼 唯讀 存檔時自動帶主檔值

欄位連動與附加功能

這一節說明「輸入某欄位 / 按某按鈕後系統實際會做什麼」,全部對應程式真實行為。

取得欄位(右上工具)

當你在 資料表名稱 填表名並按 取得欄位

  • 系統呼叫後端讀取該表在 syscolumns 的欄位清單,列在左側 TwoListBox
  • 資料表名稱 留白但 預存程序 有填,則改以「執行該預存程序(以 1=0 取空結果集)」回傳的欄位名稱為來源。
  • 每次按下都會清空右側已選清單,重新開始挑選。

TwoListBox 挑欄位 → 自動填欄位定義

當你把左側欄位移到右側並按確定,系統會逐一把右側欄位追加到「欄位定義」明細:

  • 自動以遞增序號填 欄位編號
  • 欄位 帶入原欄名;欄位說明 以「在每個大寫字母前插入空白」的規則由欄名推一個預設說明(例如 CustNoCust No),可再手改。

存檔時的自動整理(HandleDataBeforeEndEdit)

儲存 時,系統在寫入前會把主檔的 語言版本 / 單據別 / 瀏覽辨識碼 統一回填到三類明細,並重編欄位定義序號:

  • 欄位定義欄位 空白的列標記為刪除;其餘列重編 欄位編號,並帶入主檔的語言版本 / 單據別 / 瀏覽辨識碼。
  • 預設條件組合預設編號 空白的列標記為刪除;其餘列帶入主檔的語言版本 / 單據別 / 瀏覽辨識碼。
  • Pivot 清單編號 空白的列標記為刪除;其餘列帶入主檔的單據別 / 瀏覽辨識碼(語言版本不回填,pivot 列的語言版本以該列自己選的為準)。

存檔後重整環境暫存(AfterEndEdit)

存檔成功後,系統會即時重抓「自訂條件欄位」暫存表(自訂條件欄位1),讓之後新開的瀏覽器讀到最新欄位定義。已開著的面板不會自動更新(見前置需求的提醒)。

新增明細列時自動帶單據別(OnDetailItemCreated)

新增 建立空白 pivot 明細列時,系統會把主檔的 瀏覽類別 自動帶進該列的 單據別,省去手動輸入。

換筆(翻頁)時刷新顯示名稱(AfterMoverRecord)

每翻到一筆樣板,系統會重新計算「預設條件組合」與「欄位定義」兩格線的 顯示名稱(依語言版本翻譯),所以唯讀的顯示名稱會隨語系變動,而你輸入的原始 類別 / 欄位說明 不變。

這些設定在瀏覽器端如何被使用

本表單存的資料,會在使用者於各單據開啟瀏覽 / 查詢面板時被讀回(以「單據別 + 瀏覽辨識碼」比對):

  • 欄位定義 → 決定面板上「可挑來篩選的欄位下拉」內容;其中 物件Search 會給該欄一個查詢輔助元件、Date 會給日期元件;條件式 會在套用該欄時併入 SQL;遮罩 控制輸入格式。
  • 預設條件組合 → 變成面板上的「預設條件」下拉,使用者選一組就自動帶出整組條件。
  • 瀏覽辨識碼 → 面板開「瀏覽」用 B 那組樣板、開「查詢」用 D 那組樣板。
  • Pivot 清單 → 提供該類別可連結的樞紐分析報表。

B(瀏覽)與 D(查詢)通常各做一份

同一張單據的「瀏覽」與「查詢」面板各自讀 B / D 的樣板。若希望兩種面板的可篩欄位不同,就分別建立 瀏覽辨識碼=B瀏覽辨識碼=D 兩筆主檔。

常見問題

在單據按「瀏覽 / 查詢」時,挑不到我設定的欄位?

先確認三件事:(1) 本表單的 單據別 是否與目標單據的 ProgramClass 名稱完全一致;(2) 瀏覽辨識碼 是否與面板類型相符(瀏覽用 B、查詢用 D);(3) 是否已關掉再重開該單據的瀏覽器——存檔只刷新暫存表,已開的面板不會即時更新。若該單據完全沒有對應樣板,瀏覽器會退而改用資料表 schema 自動列欄位。

存檔被擋,提示要先輸入資料?

主檔的 瀏覽類別單據別 兩欄為必填,任一空白都會擋存。請補齊後再按 儲存

明細列刪不掉 / 存檔後又跑回來?

明細是用「關鍵欄清空」來刪:欄位定義要清空 欄位、預設條件要清空 預設編號、pivot 要清空 編號,存檔時該列才會被標記刪除。只清其他欄位不會刪除整列。

「顯示名稱」欄為什麼不能改?

顯示名稱是唯讀的翻譯結果,依 語言版本 自動帶出。要改顯示文字,請改可編輯的 類別(預設條件)或 欄位說明(欄位定義),或調整對應語系的翻譯。

這支和「ZCOND(舊版自訂條件別)」差在哪?要用哪個?

兩者畫面幾乎相同、code 同為 A-100,差別只在程式以 ProgramClass.TWORKZCOND / ProgramClass.ZCOND 區分。新版瀏覽器走的是 TWORKZCOND 這套樣板,新導入請維護本頁這支;ZCOND 視為舊版相容用途。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收後補拍(放 docs/A-System/images/):

  1. tworkzcond-step1.png — 整體版面(主檔 + 三類明細 + 右側取得欄位 / TwoListBox)
  2. tworkzcond-step2.png — 「取得欄位」後左右 TwoListBox 挑欄位畫面
  3. tworkzcond-step3.png — 欄位定義格線(含 物件 / 條件式 / 遮罩 / 欄位type 欄)
  4. tworkzcond-step4.png — 預設條件組合與 pivot 清單格線