程式資訊
- 程式 ID:
ZCOND - 所屬子系統:A.系統資料
- 狀態:stable
自訂條件別(瀏覽條件樣板)¶
功能簡介¶
「自訂條件別」用來維護 ERP 資料瀏覽器/查詢視窗所使用的條件樣板。系統各模組在做「資料瀏覽」「查詢」時,會把某支程式(單據別)底下登錄的欄位清單,組成查詢條件面板與樞紐分析(pivot)清單。本表單就是這份設定的維護入口:每一筆主檔代表一組「瀏覽類別 × 程式別 × 瀏覽辨識碼 × 語言版本」的條件樣板,往下掛三層明細——預設項目、查詢欄位定義、pivot 清單。
這支屬於系統管理者/導入顧問在設定階段使用的工具,調整後會即時反映到所有走資料瀏覽器的功能。
ZCOND 與 TWORKZCOND 的關係
本系統同時存在 ZCOND(本頁) 與 TWORKZCOND 兩支程式,選單代碼同為 A-100、操作畫面與欄位完全相同、共用同一組資料表與 Source。差異只在程式內部綁定不同的 ProgramClass:ZCOND 為沿用舊版(DARB)的版本,TWORKZCOND 為新 TWORK 平台版本。實務上請依貴公司導入時採用的版本擇一維護,兩者的操作方式與欄位連動完全一致,詳見 自訂條件別(TWORK 版)。
前置需求¶
- 權限:A.系統管理 →
A-100 自訂條件別的新增/修改/刪除/查詢權限。權限本身由 程式權限設定 維護。 - 基礎資料:本表單填的欄位來源是資料庫的實體資料表或預存程序,因此設定前需先確認:
| 資料 | 影響的結果 |
|---|---|
| 目標查詢用的資料表 / 檢視表(View) | 右側 GetField 取欄位清單的來源;填資料表名稱時讀取 |
| 目標查詢用的預存程序(SP) | 填預存程序時 GetField 改由 SP 結果集取欄位 |
| 語言對照(多語系) | 明細的顯示名稱會依語言版本翻譯顯示 |
| 程式別(單據別)對應的程式 | 主檔單據別須對應真實程式,瀏覽器才會套用此樣板 |
與 ZCOND1 的搭配
本表單登錄的「預設項目(category 明細)」會被 預設條件值(ZCOND1) 接手,用來逐項設定條件的預設值與運算子。先在本表單把欄位/類別建好,再到 ZCOND1 設定預設值。
操作步驟¶
畫面分為四個區塊:左上為主檔、左中為預設項目明細、右上為欄位取得區(ColumnSetting)、中段為欄位定義明細、最下為 pivot 清單明細。

新增一組條件樣板¶
- 按工具列
新增,左中/中段/pivot 三個明細會被清空(由AfterAddNew處理)。 - 在主檔輸入:
- 瀏覽類別(主鍵,必填,最長 5 碼)。
- 單據別(必填):對應要套用此樣板的程式。
- 瀏覽辨識碼:下拉只有
B與D兩個值,預設帶B。 - 語言版本:以語言下拉控件選擇。
- 維護預設項目明細:直接在左中格線輸入 預設編號與預設說明(類別);「顯示名稱」欄唯讀,是依語言版本翻譯後的結果。
- 用右上欄位取得區挑欄位填入「欄位定義」明細(見欄位連動與附加功能)。
- 視需要在最下方 pivot 清單明細登錄樞紐報表(編號、語言版本、名稱、檔名)。
- 按
儲存。儲存時系統會檢核瀏覽類別與單據別皆不可空白,並回寫各明細的單據別/瀏覽辨識碼/語言版本(見下節)。
修改 / 刪除¶
- 用工具列查詢/換頁(
IMoveRecord)切換到要維護的樣板。換頁後系統會重新計算各明細的顯示名稱(AfterMoverRecord)。 - 直接在格線改值即可;要刪某筆明細,把判定鍵欄位清空——預設項目清預設編號、欄位定義清欄位、pivot 清編號——存檔時該列會被標記刪除。
- 按
儲存。
存檔後條件面板才會更新
存檔後系統會重新載入「自訂條件欄位」暫存表(AfterEndEdit 呼叫 RegetTempTable),資料瀏覽器才會吃到最新的欄位設定。若改完沒存檔,瀏覽器仍沿用舊條件。
欄位說明¶
主檔¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 瀏覽類別 | ✔ | 主鍵,最長 5 碼;一組樣板的識別 |
| 單據別 | ✔ | 套用此樣板的程式別;存檔強制檢核非空白 |
| 瀏覽辨識碼 | — | 下拉只有 B / D;新增時預設 B |
| 語言版本 | — | 語言下拉(TsCobLanguage) |
預設項目明細(category)¶
| 欄位 | 必填 | 說明 |
|---|---|---|
| 預設編號 | ✔ | 明細鍵;清空=刪除該列 |
| 預設說明(類別) | — | 此預設項目的說明文字 |
| 顯示名稱 | 唯讀 | 依語言版本翻譯後顯示(DisplayDescription) |
欄位定義明細(field)¶
| 欄位 | 必填 | 說明 |
|---|---|---|
| 欄位編號 | — | 存檔時系統會依列序自動重編(1、2、3…) |
| 欄位 | ✔ | 實體欄位名;清空=刪除該列 |
| 欄位說明 | — | 由 GetField 帶入時自動以駝峰加空白產生,可改 |
| 顯示名稱 | 唯讀 | 依單據別+欄位說明翻譯顯示 |
| 條件式 | — | 查詢條件運算式 |
| 函數 | — | 套用的函數 |
| 物件 | — | 下拉:空白 / Search / Date,決定該欄在條件面板用哪種輸入控件 |
| 遮罩 | — | 輸入遮罩 |
| 欄位type | — | 欄位型別代碼(單一字元) |
pivot 清單明細¶
| 欄位 | 必填 | 說明 |
|---|---|---|
| 編號 | ✔ | 明細鍵;清空=刪除該列 |
| 語言版本 | — | 下拉(語言清單) |
| 名稱 | — | pivot 報表名稱 |
| 檔名 | — | pivot 範本檔名 |
| 單據別 | 唯讀 | 新增列時自動帶主檔的瀏覽類別(OnDetailItemCreated) |
| 瀏覽辨識碼 | 唯讀 | 存檔時自動帶主檔的瀏覽辨識碼 |
欄位連動與附加功能¶
這一節整理「輸入某欄位 / 按某按鈕後系統會做什麼」,全部來自實際程式碼。
右上欄位取得區(ColumnSetting)¶
這是本表單最關鍵的輔助工具,用來快速把資料表 / SP 的欄位填進「欄位定義」明細:
- 填資料表名稱後按
GetField→ 系統以系統檢視表查該資料表的欄位清單,把欄位名載入左側候選清單(GetField,底層走DARB_GETDATA4查dbo.syscolumns)。 - 填預存程序後按
GetField(資料表名稱留空時)→ 系統以1=0條件呼叫該 SP,只取回它的結果集欄位結構當候選清單(GetFieldByProcedure)。 - 候選欄位顯示在
TwoListBox左側,把要用的欄位挑到右側。 - 按
TwoListBox的確定(BtnOKCommand)→ 系統把右側每個欄位逐一加進「欄位定義」明細:欄位=欄位名、欄位說明=欄位名自動「在大寫前加空白」轉成可讀字串、欄位編號=由 1 起遞增。
資料表名稱優先於預存程序
GetField 會先看資料表名稱有沒有填;有填就走資料表那條路,沒填才看預存程序。兩個都填時,預存程序會被忽略。
存檔時的自動回寫(HandleDataBeforeEndEdit)¶
按儲存時,系統在實際寫入前會自動整理三層明細:
- 欄位定義:跳過「欄位」空白的列(標記刪除);其餘列依序重編欄位編號(1、2、3…),並把主檔的語言版本 / 單據別 / 瀏覽辨識碼回寫到每列。
- 預設項目:「編號」空白的列標記刪除;其餘列回寫主檔的語言版本 / 單據別 / 瀏覽辨識碼。
- pivot 清單:「編號」空白的列標記刪除;其餘列回寫主檔的單據別 / 瀏覽辨識碼。
存檔檢核(AllowSave)¶
當你按儲存時,系統會檢查主檔:
- 瀏覽類別空白 → 擋存並提示先輸入瀏覽類別。
- 單據別空白 → 擋存並提示先輸入單據別。
兩欄都不可空白,缺任一都無法存檔。
新增 pivot 列時自動帶值(OnDetailItemCreated)¶
在 pivot 清單明細新增一列時,系統會把主檔目前的瀏覽類別自動填到該列的單據別欄位,省去手動輸入。
換頁 / 載入時重算顯示名稱(AfterMoverRecord)¶
切換到另一筆主檔時,系統會對「預設項目」與「欄位定義」兩個明細逐列重算顯示名稱(SetDisplayDescription)——預設項目以 ZCOND 語系翻譯「類別」、欄位定義以「單據別」語系翻譯「欄位說明」。所以同一份設定在不同語言版本下,顯示名稱會跟著變。
存檔後刷新條件面板(AfterEndEdit)¶
存檔成功後,系統重新載入「自訂條件欄位」暫存表(RegetTempTable)。資料瀏覽器(BrowseInitialzation)載入查詢條件時就是讀這份暫存表,因此本表單一存檔,相關功能的查詢條件面板即更新。
常見問題¶
按 GetField 沒有跑出任何欄位?
請確認資料表名稱或預存程序至少填了一個、名稱拼字正確且該物件存在於資料庫。系統會優先採用資料表名稱;若你想用 SP 取欄位,請把資料表名稱欄位清空。
改完欄位,資料瀏覽器的查詢條件沒變?
必須按儲存。存檔時系統才會重新載入「自訂條件欄位」暫存表,瀏覽器才會吃到新設定。只改格線沒存檔不會生效。
存檔被擋,說要先輸入瀏覽類別 / 單據別?
主檔的瀏覽類別與單據別是必填,兩者皆不可空白才能存檔。
明細想刪一列,怎麼刪?
把該列的判定鍵欄位清空即可——預設項目清預設編號、欄位定義清欄位、pivot 清編號。存檔時系統會把這些空白列標記為刪除。
ZCOND 和 TWORKZCOND 都是 A-100,我該用哪一支?
兩支畫面、欄位、資料表完全相同,差別只在內部對應不同 ProgramClass(ZCOND 為舊 DARB 版、TWORKZCOND 為新 TWORK 版)。請依貴公司導入時採用的版本維護其中一支即可,詳見 自訂條件別(TWORK 版)。
顯示名稱欄是空白或英文?
顯示名稱是依語言版本+翻譯對照即時產生的唯讀欄。若對照表沒有該語系的翻譯,會退回原文顯示。換頁後系統會自動重算,無法手動編輯。
相關功能¶
- 自訂條件別(TWORK 版) — 與本頁同代碼 A-100 的新平台版本
- 預設條件值(ZCOND1) — 接手本表單的預設項目,設定條件預設值
- 程式權限設定 — 維護本程式的操作權限
- 系統管理模組總覽
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/A-System/images/):
zcond-step1.png— 表單四區塊全貌(主檔+三明細+欄位取得區)