iCoder前端關聯處理功能
訊光科技/Andy Kao
前言
前面的文章中談到有關iCoder讀入許多不同Word表格時,表格間通常是有關聯性的,接著來跟大家說明有那些關聯及關聯的資料處理等。
在iCoder中,只要按次序(基本資料先讀入)讀入你的Word表單,iCoder就會很智慧幫你分析彼此的關係,除了基本的欄位關係外,更可以分析判斷幫你設為多級選單,可以一層層篩選資料並回傳,甚至還可以處理整批的資料拋轉,將別的表格資料以複選方式拋轉到目前的表格中,過程完全沒有任何一行程式碼。
關聯類型
在 Word表格中,通常我們會以"#R"或"#RV"及"#C"的欄位類型來定義關聯關係,如下說明:
#欄位類型 |
使用時機 |
實例 |
#RV |
編輯時讓User輸入對方資料表的編號或打開選單選回,顯示也是編號,此用法通常後面有名稱及其他欄位,可以在User輸入編號後帶過來。#RV後面參數可以指定另一個存在的資料表,沒有指定時系統會自動關聯。如果此欄位為鍵值欄位又要使用關聯選單時,可設定為#KR。 |
客戶編號:#RV 客戶名稱:# (從客戶資料帶過來) 電 話:# (從客戶資料帶過來) 倉庫編號:#RV 倉庫資料 (指定資料表) |
#R |
與#RV一樣,編輯時讓User輸入對方的編號或打開選單選回,不同的是顯示時為對方的名稱。此用法通常後面沒有名稱欄位,讓編號與名稱合併在一個欄位。 |
員工編號: #R (顯示使用員工姓名) 產品編號:#R Product (指定資料表,顯示產品名稱) |
#C |
以下拉的方式選擇另一個資料表,因為下拉無法容納過多的資料,通常50筆以內的資料才會使用#C來選擇資料。#C後面可以指定另一個存在的資料表,或是固定的項目內容。資料表可以使用系統內建的SYS_PARAS,代表項目內容會動態取自系統參數。如果此欄位為鍵值欄位,可設定為#KC。 |
規格型號:#C 規格資料 (指定資料表) 顏色:#C 黃 紅 藍 綠 黑 白 單據類別:#C
SYS_PARAS (使用系統參數表) |
#O或#CK |
以單選或複選方式選擇固定的項目或指定某一個資料表作為項目來源。資料表可以使用系統內建的SYS_PARAS,項目內容會動態取自系統參數。 |
地區:#O 東
西 南 北 中 付款方式:#O SYS_PARAS (使用系統參數表) |
註1: 使用SYS_PARAS共用的系統參數可以省去不必自己建立資料表即可直接重複使用,但SYS_PARAS只能用在#C與#O及#CK這三種,不能使用 #R與#RV。SYS_PARAS可以於iCoer的[工具]/[系統參數表]中統一設定。
系統資料表關聯
iCoder內建了幾個系統資料表,包括USERS、GROUPS、ROLES及上文提到的SYS_PARAS等,都可直接使用這四個資料表來做為關聯,無需另外以Word來設計資料表,說明如下:
系統資料表名稱 |
或英文名稱 |
適用類型 |
說明 |
系統參數表 |
SYS_PARAS |
#C,#O,#CK |
共用的系統參數表,實際的資料表名為SYS_PARAS,以欄位標題及欄位名稱作為參數分隔。可在[工具]/[系統參數表]中設定。 |
系統用戶表 |
USERS |
#R,#RV,#C,#O,#CK |
系統的用戶帳號表,實際的資料表名為USERS,可自由開放來直接關聯引用。資料內容在[安全管理]/[使用者]中設定。 |
系統部門表 |
GROUPS |
#R,#RV,#C,#O,#CK |
系統的部門資料表,實際的資料表名為GROUPS,可自由開放直接關聯引用。在[安全管理]/[群組]中設定。(群組亦當作部門來使用,這裡抓取角色='N'的資料) |
系統角色表 |
ROLES |
#R,#RV,#C,#O,#CK |
系統的角色資料表,實際的資料表名也為GROUPS。同樣在[安全管理]/[群組]中設定。(這裡抓取角色='Y'的資料) |
關聯的實例
以下我們就以出貨單的例,來說明上述關聯的實例,如下圖。
我們從上而下,來看一下紅字部分的設定:
1. 客戶編號:使用#RV關聯選單,透過欄位名稱"客戶編號"來找到"客戶資料表",所以在此不必設定資料表名稱;欄位的後面有"名稱"、電話"、"地址"...等與客戶資料表相同欄位名稱,會從客戶資料中自動帶值過來,所以這裡用#RV代表輸入客戶編號並顯示客戶編號即可。
2. 業務:使用#R關聯選單,透過欄位名稱"業務"是找不到"員工資料表"的,因為員工資料表的主鍵名稱為"員工編號",非"業務",所以在此特別告知對應的關聯資料表名稱。因該欄位之後沒有"業務姓名",所以我們使用#R,輸入業務的員工編號,顯示會以員工姓名來呈現。
3. 付款方式:使用#O單選項目,因為是固定項目,後面直接使用Word表格裡的定義,如"□現金 □超商 □月結電匯
□月結支票"等項目。(項目間須以空白格隔開)
4. 送貨方式:使用#C下拉選單,因為送貨方式沒有幾項,又需要經常更動這些項目,因此不用固定的項目設定。使用共用的系統參數表,可省去定義基本資料表的步驟,系統參數表的好處就是可以大量減少編號+名稱這種對照表,直接使用共用的系統參數表即可。系統參數表是在iCoder的"工具"/"系統參數"來定義,如下:
這個系統參數表(實體資料表名稱為SYS_PARAS)是大家共用的,所以會以欄位+標題名稱作為內容隔離的依據,如上圖。
5. 出貨部門:使用#C下拉選單,因為iCoder在"安全管理"/"群組/角色"中已經有"部門"的設定,所以,我們就以"系統部門表"或"GROUPS"來作為關聯的對象,無須另外重建。如下圖:
上圖中,"是否角色"有勾選者代表為角色名稱,沒有勾選者,及代表部門名稱。
6. 明細表的產品編號:使用 ##KR代表產品編號為明細表的主鍵欄位(不能重複)而且又是關聯選單欄位,關聯對象以"產品編號"可以找到"產品資料表"所以不用設定資料表名稱。
多級關聯選單
表單上如果有多個關聯選單的輸入,通常不一定是個別的關係,有時候彼此有關聯,如User輸入了某一個關聯選單後,在另一個關聯選單打開時,須以前面的關聯選單作為條件去過濾資料,避免選擇過多的資料等。我們再以出貨單為例來說明多級關聯選單,如下:
1. 我們在出貨單增加了"報價單號",並以"#R"關聯了報價單的資料表傳回。接著我們在出貨單明細中以"##KR"來設定"產品編號"的第二級選單,原本產品編號是以產品資料表為開窗選擇對象,現在將改成選擇"報價單明細"的資料。也就是說,先在出貨單選擇要出貨的一張報價單,再以此報價單號來找出相對的"報價單明細"。(iCoder是根據"報價單明細"的"報價單號+產品編號"的主鍵來判斷"產品編號"為第二級的選單,過濾條件當然為出貨單的"報價單號"欄位)。執行的畫面如下:
新增出貨單時,選擇一張報價單。
然後在"出貨單明細"中新增一筆資料,選擇"產品編號"時,可以找出相對於該報價單的所有產品,並選擇一個報價產品傳回。
2. 另一個例子,同上,我們在出貨單增加了兩個欄位,前者為"縣市名稱",後者為"鄉鎮名稱",當然我們預先準備了一個"縣市鄉鎮表",如下:
接著以"#R "定義"縣市名稱"並關聯到縣市鄉鎮表,因為此表的主鍵為"縣市名稱+鄉鎮名稱",所以第二個"#R"的"鄉鎮名稱"就為第二級的關聯選單,過濾條件的欄位即為"縣市名稱"。執行的畫面如下:
新增出貨單時,縣市名稱選為"台北市",因為縣市鄉鎮表沒有正規化將縣市與鄉鎮的資料拆開,所以選擇時縣市會重複,此可以透過EEPCloud平台將縣市設為Distinct(過濾重複)即可改善。
選完縣市為"台北市"之後,後面的鄉鎮開啟選單時就會出現台北市的各區,達到二級過濾的目的。
整批導入資料
上面出貨單的實例中,是可以根據報價單的資料一筆一筆在出貨單明細中選擇並傳回 (與報價單明細欄位名稱相同的欄位會帶值過來),但如果要讓User更方便輸入資料的話,iCoder有個更強大的整批導入功能,如下的設定:
在iCoder讀入Word的"其他設定"中,有一個"明細表整批新增來源"的設定,在此我們選擇"報價單號"作為"報價單明細"的來源條件;此時iCoder會自動在出貨單的明細表中,增加了一個"整批新增"的按鈕,按下時會打開"報價單明細"資料讓User複選,最後按下"確認"之後可自動將選擇的資料傳回,完成整批導入的功能,如下:
選擇好一張報價單之後,按下"整批新增"可以複選該報價單明細的產品資料。
確定之後會自動導入所選的資料,並將欄位名稱相同的欄位帶值過來,出貨單的計算公式也會自動配合計算,很神奇吧,真的一行程式也沒有。
結語
iCoder構想的當初,覺得可能只能針對單一的Word表格會非常好用,開發神速,輸入組件多樣且富有變化性,但如果來面對複雜且超多關聯的商用系統恐怕會吃不消。沒想到,短短的幾個月,從資料表間的關聯到關聯資料輸入完成,然後是多級關聯選單,最後到整批新增等連程式師都不一定開發得出來的功能,也都能在iCoder順利自動產生,真是始料未及。當然整批新增絕對也不是終極功能,有更多更強的功能,等著iCoder持續往下挖掘與探索。