程式資訊
- 程式 ID:
TWORKZCOND - 所屬子系統:A.系統資料
- 狀態:stable
自訂條件別(瀏覽條件樣板)¶
功能簡介¶
「自訂條件別」用來替每一支資料表單的資料瀏覽器(按下單據上的「瀏覽」「查詢」時跳出的條件視窗)量身打造可篩選的欄位清單與預設條件組合。
換句話說,使用者在各單據按下「瀏覽 / 查詢」後,條件面板上「能挑哪些欄位來篩、欄位用什麼輸入元件、有沒有預先排好的條件組合可選」都是在這支表單裡定義的。它屬於 A.系統管理 的系統層樣板,通常由系統管理員或導入顧問維護。
一筆主檔代表一組「瀏覽類別 × 單據別 × 瀏覽辨識碼(B 瀏覽 / D 查詢)」的樣板,底下掛三類明細:
- 預設條件組合(明細一):替這個類別命名好幾組常用條件,使用者在瀏覽面板可從下拉直接選用。
- 欄位定義(明細二):列出此類別瀏覽面板可挑選的欄位,並指定其輸入元件、條件式、遮罩等。
- Pivot 報表清單(明細三):把此類別連結到對應的樞紐分析(pivot)報表檔。
與「預設條件值」「舊版自訂條件別」的關係
本表單只管「有哪些欄位可篩、有哪幾組條件名稱」;真正每一組條件「欄位用什麼運算子、值是多少」是在 預設條件值(A-110) 維護。兩支搭配使用。
另外系統內還有一支同樣顯示為「自訂條件別 / A-100」的舊版 ZCOND,畫面與本表單幾乎相同但以 ProgramClass.ZCOND 區分;新導入請以本頁(TWORKZCOND)為準,詳見欄位連動與附加功能。
前置需求¶
- 權限:A.系統管理 →
A-100 自訂條件別的新增 / 修改 / 刪除 / 瀏覽權限。 - 基礎資料 / 環境:本表單的設定要能生效並挑到正確欄位,需要先具備下列條件——
| 資料 | 影響什麼 |
|---|---|
| 目標單據的資料表 / View(資料表名稱) | 右側「取得欄位」按鈕從這張表的 syscolumns 抓出可挑欄位 |
| 目標查詢用的預存程序(選填,與資料表名稱二擇一) | 「取得欄位」改以預存程序回傳的欄位集合為來源 |
| 語言版本主檔(語系設定) | 欄位顯示名稱、預設條件組合說明會依語言版本翻譯 |
| 該單據的 ProgramClass 名稱(單據別填入) | 瀏覽器以「單據別 + 瀏覽辨識碼」回頭比對這份樣板 |
存檔後要重開瀏覽器才生效
本表單存檔時會即時重整環境的「自訂條件欄位」暫存表(自訂條件欄位1)。但已開著的瀏覽 / 查詢面板不會即時刷新——請關掉再重新開啟該單據的瀏覽器,新欄位與條件組合才會出現。
操作步驟¶
新增一筆條件樣板¶
- 按工具列
新增。系統會清空畫面、建立一筆空白主檔,並把焦點移到 瀏覽類別 欄位。 - 輸入 瀏覽類別(主鍵,最長 5 碼)。這是這份樣板的識別代號。
- 輸入 單據別:填目標單據的 ProgramClass 名稱(例如某張單據的程式代號),瀏覽器日後就是用它來找回這份樣板。
- 選 瀏覽辨識碼:
B=瀏覽用、D=查詢用(新增時預設帶B)。 - 選 語言版本。
- 視需要填三類明細(見下方各步驟),完成後按
儲存。
瀏覽類別與單據別必填
存檔時若 瀏覽類別 或 單據別 任一為空白,系統會擋下並提示先輸入,無法存檔。
維護「欄位定義」(決定瀏覽器能篩哪些欄位)¶
可以手動逐列輸入,也可用右上角的工具一次帶入:
- 在右上 資料表名稱 輸入目標資料表 / View 名稱(或改在 預存程序 輸入預存程序名稱,兩者擇一)。
- 按
取得欄位,左側清單會列出該表 / 程序的所有欄位。 - 從左側挑欄位移到右側(
TwoListBox),按確定後,這些欄位會自動追加到下方「欄位定義」格線:- 欄位編號 依序自動編號。
- 欄位 帶入原始欄位名。
- 欄位說明 自動把英文欄名依大寫字母拆字加空白當預設說明,可再手改。
- 逐列補上 條件式 / 函數 / 物件 / 遮罩 / 欄位type(各欄意義見欄位連動與附加功能)。
維護「預設條件組合」(讓使用者下拉選現成條件)¶
- 在左下「預設條件」格線新增列。
- 填 預設編號 與 預設說明(類別名稱)。同一個「單據別 + 瀏覽辨識碼」下可建立多組,瀏覽面板會把它們做成下拉供使用者選。
- 顯示名稱 欄為唯讀,是系統依語言版本翻譯後的結果。
維護「Pivot 報表清單」¶
- 在最下方格線新增列。
- 填 編號 / 語言版本 / 名稱 / 檔名;單據別 / 瀏覽辨識碼 兩欄唯讀,會在存檔時自動帶入主檔值。
修改 / 刪除 / 查詢¶
- 修改:用導覽列翻到某筆樣板後直接改欄位,按
儲存。 - 刪除:明細列只要把判斷用的關鍵欄(欄位定義看 欄位、預設條件看 預設編號、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 挑欄位 → 自動填欄位定義¶
當你把左側欄位移到右側並按確定,系統會逐一把右側欄位追加到「欄位定義」明細:
- 自動以遞增序號填 欄位編號。
- 欄位 帶入原欄名;欄位說明 以「在每個大寫字母前插入空白」的規則由欄名推一個預設說明(例如
CustNo→Cust 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 視為舊版相容用途。
相關功能¶
- 預設條件值(A-110) — 為各條件組合定義實際的「欄位 × 運算子 × 值」。
- 自訂條件別(舊版 ZCOND) — 同概念的舊版表單。
- 資料模板(A-120) — 另一類系統層資料樣板設定。
- 系統管理模組首頁
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/A-System/images/):
tworkzcond-step1.png— 整體版面(主檔 + 三類明細 + 右側取得欄位 / TwoListBox)tworkzcond-step2.png— 「取得欄位」後左右TwoListBox挑欄位畫面tworkzcond-step3.png— 欄位定義格線(含 物件 / 條件式 / 遮罩 / 欄位type 欄)tworkzcond-step4.png— 預設條件組合與 pivot 清單格線