第八章RWD進階設計第八章RWD進階設計\8-6 AutoNumber自動編號

8-6 AutoNumber自動編號

自動編號在應用軟體中扮演著非常重要的角色,主要是企業透過Internet建立單據的同時,勢必要維持單據編號的唯一性,不可能由User自行來編,因此就需要使用AutoNumber元件自動編出唯一的單據號碼。

 

我們可以先查看 "出貨單" 這個透過Word產生的Server端,由於Word有設定 #KA AUTO: 'S'yyMM3,因此會自動產生【AutoNumber】元件

'S'yyMM表示會有固定字串'S'yy為後兩位西元年,MM為月份,3表示流水號3碼,詳細屬性稍後會進行介紹。
自動編號效果如下:

接著,我們來練習新增AutoNumber元件來自動編號看看

 

Step1>         打開前面做的"sRWDOrders"這個ServerPackage,從工具箱裡拖拉一個【AutoNumber】元件到設計區上。

 

Step2>         接著設定AutoNumber的各個屬性:

(1) ID:元件的識別名稱,這裡使用預設的"AutoNumber1"就可以。

(2) AutoNoID:這是給自動編號機制命名。自動編號會與SysAutoNum這個系統資料表配合使用,所有的單據號碼編到幾號都會記錄到SysAutoNum這個表中,因此AutoNumber這個元件就會以AutoNoID的屬性來對SysAutoNum個別隔離的編號處理。在此我們命名為"AutoOrdID"

(3) UpdateComponent:要用哪一個UpdateComponent配合在Insert時來執行AutoNumber動作,下拉選擇 "uc出貨單"

(4) Field:要使用哪一個欄位做自動編號,下拉選擇"出貨編號"

(5) Description:給自動編號的描述。

(6) GetFixed:前置碼,輸入固定的值。我們這裡先不做設定,下面再使用動態的方式設定前置碼。

(7) StartValue:起始值,即從幾開始編號。這裏設為"1"代表從1開始。

(8) Step:每次編號時增加多少號,預設為"1"。則每次加1,如果設為2,則可以編出1357…等等。

(9) NumDig:自動編號的位數。如果數值的位元不足時,系統會自動在前面補零,這裏設為"3",會從“001”編到“999”。

 

 

Step3>         我們接著來設計動態的前置碼,在【OnGetFixed】事件上雙擊兩下進入原始碼編輯畫面。

 

 

Step4>         這裡示範取得表單上的欄位作為前置碼,比如取得此出貨單的客戶編號欄位,做為自動編號的前置碼,參考的原始碼如下。

public string AutoNumber1_onGetFixed(object sender, string fixedString, dynamic rows)

{

    fixedString = rows[0].客戶編號;

    return fixedString;

}

 

Step5>         保存剛剛設計的sRWDCustomers後,接著來設計RWD表單的部分。打開"rwdSingle1",找到【Default】元件,【Columns】屬性進來編輯,新增一個欄位,【Field】下拉選擇"出貨編號"

 

Step6>         接著設定【DefaultValue】,設定固定值 "自動編號",告知User這是一個自動編號欄位。

 

 

Step7>         自動編號是不讓User可以編輯的,所以要將這個欄位做ReadOnly。在【DataForm】的【Columns】屬性,找到"出貨編號"欄位,【Editor】屬性進來編輯,將【ReadOnly】屬性勾選起來。

 

Step8>         保存後預覽一下:新增一筆表單,出貨編號欄位會帶入自動編號的預設值,在"名稱"欄位上打上"訊光科技系統有限公司",由於前面練習設定的關係,檢核的欄位請自行填上,以免Validate元件稽核時阻擋存檔。

 

按下確定後,按下查看,可以看到客戶編號會自動轉換成自動編號值,並依據客戶編號的欄位值當作前置碼。

 

 

這時候打開Table下面【SystemTable】目錄下的【SYSAUTONUM】這張表,可以看到已經有一筆AUTOIDAutoOrdID的前置碼紀錄在裡面了。


 

Top of Page