q  自動編號處理

在這個例子中使用的資料表PurchasePurchaseID是採用自動編號的,所以也需要用在前一章中提到的自增值處理方法來設定ServerModifyTrue,這裏簡單介紹一下設定的方法:

 

Step1打開剛才做S004項目,從Toolbox中選擇AutoNumber元件並貼入Component.cs的設計頁面中。

 

3-2-1貼入AutoNumber元件


Step2首先,要確認Active屬性為True,這樣自動編號元件才被開啟。然後透過下拉方式選擇UpdateComp,即代表要配合那一個UpdateCompInsert時來執行AutoNumber動作,在這裏選擇ucPurchase。這時,就可以透過下拉方式來選擇TargetColumn的自動編號欄位名稱,我們選欄位PurchaseID,注意,自動編號欄位只能是字串型態。

3-2-2開啓AutoNumber元件

 

接著設定AutoNumber的各屬性,如下:

 

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

     [GetFixed]屬性:則是自動編號設定前置碼,這裏可以直接用字串,也可以通過輸入函數名稱加括弧的方式來取得其他欄位做為動態前置碼,我們將其填入MyFixed(),代表要呼叫MyFixed()這個程式來取得前置碼。


Ž     [NumDig]屬性:用來是設置自動編號的位數,如果數值的位元不足時,系統會自動在前面補零,這裏設為3,會從’001編到’999


     [StartValue]屬性:是設置自動編號的起始值,即從幾開始編號,這裏設為1,代表從1開始。


     [Step]屬性:每次編號時增加多少號,預設為1,則每次加1,如果設為2,則可以編出1357…等等。

  [OverFlow]屬性:是設定是否要處理異位的情況。如果為True,就會在編到999NumDig3)時,自動會編A00..A99B00…,編到’Z’時又會從’a’編到’z’,因此NumDig=3時,可以編出999+2600+2600=6199個編號。

 

3-2-3 設定AutoNumber元件屬性

 

接著,我們來設定MyFixed()的程式。


Step3打開程式編輯視窗Server模組S004頁面上按右鍵選View Code功能,在Dispose(bool disposing)下面與Component Designer generated code間,寫入程式,代表將取得”P”加上系統的日期月份做為前置碼,日期格式yyMM代表為西元年的年月日4,加上前面的”P”共有5前置碼,就是單據會以”P”加上年月來編號,相同年月就會續號,不同年月又會從1開始編號,圖示如下:

 

3-2-4編輯MyFixed()的程式

 

Step4為了讓User可以在新增時立即可看到此自動編號,必須在Server端告訴系統Insert後必須要重新將資料Select出來,並傳回Client端讓User得以看見,因此,我們必須將ucPurchase (UpdateComponent)ServerModify設為True

 

3-2-5ServerModify設為True

 

ServerModify不僅是Server端的設定,在Client端也是必須設定的,也就是說當User將資料InsertServer端並重新Select傳回Client端後,Client也必須定義重新顯示Select的資料,此並不是重新讓InfoDataSet重新Active一次因為這樣將會下載多餘的資料造成效能上的問題因此ServerModify只會更換目前輸入的這筆資料。

Step5打開ClientW005設計頁面。在頁面上右鍵選View Component Designer打開元件設計頁面選擇WMaster(WebDataSet)ServerModify屬性設為True

3-2-6設定Wmaster.ServerModifyTrue

 

另一個與ServerModify有關的元件就是WebDataSourceAutoApply屬性因為AutoApply=True時,系統一次只送一筆Master與相對的Detail資料到Server端中,才能與後端ServerModify重新Select一筆Master的資料相對應,如果AutoApply=False,會一次新增多筆MasterDetail資料,就無法符合ServerModify的精神了,因此ServerModify必須搭配AutoApply=True才會生效。

 

Step6如下將MasterAutoApply設為True

 

3-2-7 設定Master.AutoApplyTrue

 

Step7請重新編譯Server端的S004Client端的W005個項目。右鍵InfoLogin.aspx執行View in Browser,會打開此W005網頁。

 

我們在WebNavigator上按下「新增」的功能,此時我們在「訂單號碼」上輸入0一定要輸入,下一節再告之如何帶預設值。在「廠商號碼」與「員工號碼」中各輸入1的內容,按下存檔功能。即會存檔到後端中,並將新的編號透過ServerModify顯示在Web的網頁上。

 

3-2-8結果測試1


3-2-9結果測試2

 

 

 

q  FormView的預設

 

FormView中的預設值設定與在WebGridViewWebDetailsView中略有不同。設置方法如下文。

 

Step1W005找到MasterWebDefaultwdPurchases。其屬性設定如圖:

 

3-2-10 新增WebDefault元件

 

Step2Fields屬性中增加PurchaseIDPurchaseDatePurchaseID預設自動編號,用來告之User此號碼為自動編號欄位;PurchaseDate則預設為_today,意為當天日期。

 

3-2-11 增加PurchaseID

 


3-2-12 增加PurchaseDate欄位

 

Step3右鍵按一下FormView,選中Copy Default Fields,系統會自動將WebDefautl中設定的Fields及相對的預設欄位複製到FormViewFields屬性中。  

3-2-13 自動複製Fields

小貼示:

這是因為在WebGridViewWebDetailView只要設定WebDefault即可,但WebFormView內的欄位資料連結較為特殊,如果要達到預設的目的必須另外在WebFormViewFields內另外定義,請務必注意。

 

Step4按一下WebFormViewFields屬性,系統自動Copy WebDefault內所設定的欄位到WebFormView中,因此你只要核對ControlIDFormView內那一個相對元件即可,系統會自動下拉InsertItemTemplate內的元件讓你選擇。如使用了特殊的輸入元件,如WebDateTimePickerWebRefVal等,則也要確定此處的設定相對應的元件。

 

3-2-14 FormViewFields

 

Step5右鍵InfoLogin.aspx執行View in Browser,重新打開此W005網頁。我們在WebNavigator上按下「新增」的功能,此時我們可以看到在「訂單號碼」上會自動出現自動編號,而「訂單日期」則會出現今天的日期。

3-2-15 結果


 

 


訊光科技系統股份有限公司

Converted from CHM to HTML with chm2web Pro 2.85 (unicode)