AutoNumber
【功能說明】
用途:使用於 Server 端,用在 UpdateComp
,或 InfoTransaction 中,在新增資料前自動編出號碼。
【元件屬性】
Name( 名稱 )(string)
元件名稱,用於識別該元件。
Active( 啟動 )(bool)
設定讓此自動編號功能是否有作用。
Discription( 描述 )(string)
設定對此自動編號規則的敘述說明。此資訊會同步寫入到 SysAutonum 資料表中。
AutoNoID( 識別代號 )(string)
自動編號規則的識別碼,每個不同的編號規則都有自己的唯一識別碼,此識別碼會與 SysAutoNum 系統表單存取,來達到自動編號的目的。
GetFixed( 前置碼 )(string)
自動編碼的前置碼,可以設定如以日期作為開頭,加 3 位自動流水碼等格式的編碼。此屬性可通過函數來取得前置碼,如設定為 MyGetFixed ()代表要呼叫一個 MyGetFixed
程式來傳回前置碼。
NumDig( 編號位數 )(int)
自動編號的位數,如 3 代表可編 001 到 999 等號碼,會在不滿的位數上自動加『 0 』。
OldVersion( 舊版編號 )(bool)
存取舊的 EEP5/7 AUTONUMBER 的格式。
OverFlow( 溢出處理 )(bool)
設定為 True 時,會在編碼溢出時,將第一位設定為『 A 』~『 Z 』,再往下繼續編碼『 a 』~『 z 』。如果設定為 False ,則在溢 出時只會提示錯誤。
例如: NumDig 設定為 3 , StartValue 為 1 , Step 為 1 ,如果 OverFlow 設定為 False ,則只能編 999 個號碼,如果 OverFlow 設定為 True ,則一共可以編 999+2600+2600 = 6199 個號碼。
StartValue( 起始號碼 )(int)
每個編號規則產生第一筆自動編號的值,預設為 1 。
Step( 每次遞增量 )(int)
每次編號的增加量,一般為 1 。如設定為 2 ,可編出 1 , 3 , 5 , 7 ……
TargetColumn( 編號欄位名稱
)(string)
需要自動編號的對方欄位名稱,此屬性不能為空。
UpdateComp(UpdateComp
元件名稱 )(string)
所對應的 UpdateComp
名稱。
IsNumFill( 是否為數值 )(bool)
如果對應的 TragetColumn 欄位名稱為數值時,請配合設定為 True 。
【事件】
此元件無事件。
【功能函數】
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;
}
| Converted from CHM to HTML with chm2web Pro 2.85 (unicode) |