Appendix AServer端元件\AutoNumber

AutoNumber

 

 

【功能說明】

用途:使用於Server端,用在UpdateComp,或InfoTransaction中,在新增資料前自動編出號碼。

 

 

【元件屬性】

Name(名稱)(string)

元件名稱,用於識別該元件。

 

Active(啟動)(bool)

設定讓此自動編號功能是否有作用。

 

AutoNoID(識別代號)(string)

自動編號規則的識別碼,每個不同的編號規則都有自己的唯一識別碼,此識別碼會與SysAutoNum系統表單存取,來達到自動編號的目的。

 

Discription(描述)(string)

設定對此自動編號規則的敘述說明。此資訊會同步寫入到SysAutonum資料表中。

 

GetFixed(前置碼)(string)

自動編碼的前置碼,可以設定如以日期作為開頭,加3位自動流水碼等格式的編碼。此屬性可通過函數來取得前置碼,如設定為MyGetFixed()代表要呼叫一個MyGetFixed程式來傳回前置碼。

 

isNumFill(是否用數字填充)(System.Boolean)

是否用数字填充AutoNumber

 

NumDig(編號位數)(int32)

自動編號的位數,如3代表可編001999等號碼,會在不滿的位數上自動加『0』。

 

OldVersion(是否為EEP7版本)(bool)

用於區分是否現在使用的系統是否為EEP7設計環境的系統表,默認為false,表示為新的EEP2006/EEP2008/EEP2019

 

OverFlow(溢出處理)(bool)

設定為True時,會在編碼溢出時,將第一位設定為『A』~『Z』,再往下繼續編碼『a』~『z』。如果設定為False,則在溢出時只會提示錯誤。

例如:NumDig設定為3StartValue1Step1,如果OverFlow設定為False,則只能編999個號碼,如果OverFlow設定為True, 則一共可以編999+2600+26006199個號碼。

 

StartValue(起始號碼)(int32)

每個編號規則產生第一筆自動編號的值,預設為1

 

Step(每次遞增量)(int32)

每次編號的增加量,一般為1。如設定為2,可編出1357……

 

TargetColumn(編號字段)(string)

需要自動編號的對方欄位名稱,此屬性不能為空。

 

UpdateComp(UpdateComp元件名稱)(string)

所對應的UpdateComp名稱。

 

【事件】

此元件無事件。

 

【功能函數】

Exccute(Connection,Transaction)

提供用戶用代碼執行自動新增。可以讓用戶在需要手動新增資料時,按照使用的AutoNumber元件設定來編出流水號,使系統能使用一致性的編碼原則。

 

【其他說明】

本元件會固定使用到一個SysAutonum的系統Table,其結構為AutoId(VarChar40)Fixed(VarChar40)CurrNum(Num10) Discription(Varchar50),所有的AutoNumber元件都會以這個Table的內容依據來編號。

 

【範例】

此為一個自行執行到後端Server Method來使用自動編號的範例:

 

public object MYINSERT(object[] param)

{

 IDbConnection conn = this.AllocateConnection("ERPS");  //取得一個資料庫連線

   conn.Open(); 

   IDbTransaction trans = conn.BeginTransaction();  //啟動Transaction

   object[] ret = new object[] { 0, null }; //傳回值設定

   try

    {

       object no = autoNumber1.Execute(conn, trans); // 取得自動編號的值

        this.ExecuteCommand("Insert into Orders (CustomerID,EmployeeID,OrderNo) Values (1,1,'" + no.ToString() + "')",conn,trans);

       trans.Commit();

        ret[1] = no.ToString();  // 傳回新Insert的號碼

}

catch

      {

         trans.Rollback();

      }

 this.ReleaseConnection("ERPS", conn); // 釋放資料庫連線

returnret;

}

此為在GetFixed屬性中,要取得主檔欄位值做自動編號前引碼的例子,此例是以PurchaseDate為前引碼。

public String MyGetFixed()

{

//取得PurchaseDate的當前值

object obj = (DateTime)ucMaster.GetFieldCurrentValue("PurchaseDate"); 

//先定義一個當天日期,以保證既便user沒有輸入該欄位值時用當天日期來編號

DateTime dateTime = DateTime.Today;

//判斷user是否輸入資料,如果有,則將其轉換為DateTime類型

if (obj.ToString() != "")

  {

     dateTime = (DateTime)obj;

}

//將這一日期轉換成6位的字串,用來編號

string sFixed = "P" + string.Format("{0:yyMMdd}", dateTime);

return sFixed;

}

 

 

Top of Page