附錄\B. Server端元件\InfoCommand

【功能說明】

用途:屬於Server端的元件,用於對資料庫進行資料存取,提供一個虛擬SQL Command元件,以此SQL命令來取得後端資料庫的資料並傳遞給Client端,此元件可自動依資料庫類型為SQL/ORACLE/OLE DB等不同的資料庫自動產生對應的.NET Command元件。如要對資料進行存儲操作,則須與UpdateComponent配合使用。

 

【元件屬性】

Name(名稱)(string)

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

 

CacheConnection(bool)

緩存連接。設為true后,資料連接不會釋放,需要自己寫程式釋放。一般在使用臨時表時設為true

 

CacheData(bool)

緩存資料。設為true后,資料會放在memory中,sql語句如果不改變資料就不會重取。

 

CommandText(SQL命令)(string

EEP Server需要用本屬性的SQL命令來直接對資料庫進行存取,一般皆為Select的語法,代理Client從資料庫來取得資料,並傳回給Client。此屬性可以使用SQLBuilder來設定。此SQL語法也可以用Left Join語法關連多個Table

 

CommandTimeout(SQL命令超時時間)(int32)

SQL命令執行的超時時間限定,超過這個時間就表示無法連接。

 

CommandType(SQL命令類別)(enum)

SQL命令的類別,可選為:

TextSQL命令句,一般都是設定為Text,預設也是。

StoredProcedure:資料庫的存儲程序。

TableDirect:直接連接資料表,EEP不支援此種模式的連接。

 

EEPAlias(EEP資料庫名稱)(string)

可指定一個對應的EEP ALIAS(虛擬資料庫,於APPSRV.EXE的「Database Setting」中定義),一般InfoCommand的資料集是不必設定此屬性的,因為會於每個Client Login時告之EEP Server,並讓InfoCommand可以依Client所設定的Database來動態存取資料,這樣做的目的,是為了資料庫名稱可以獨立於系統外面,但如果有多公司多廠的資料須相互整合時,就必須指定特定的資料庫來達到同時存取多個資料庫資料的目的。

 

EncodingAfter(string)

為轉換後給Client端資料的定序內碼

 

EncodingBefore(string)

為資料庫的定序內碼

 

InfoConnection(對應InfoConnection名稱)(InfoConnection)

要關聯的InfoConnection,此屬性不能為空。InfoCommand需要依據InfoConnection的設定關聯到要處理的資料庫,本屬性只使用在設計模式中,用來對應的Database連線,使InfoCommand的語句,可以在設計模式時被Active

 

InfoParameters(參數)InfoParameters

用於Stored Procedure,包括以下屬性:

Direction(方向) (System.Data.ParameterDirection)設定該參數是輸入參數還是輸出參數

InfoDbType(類型) (Srvtools.InfoDbType)設定該參數在資料庫中對應的欄位類型。

ParameterName(參數名) (System.String)參數名

Precision(精度) (System.Byte)Precision屬性由InfoDbTypeDecimal的參數使用。用於表示Value屬性的最大位元數。預設值為0。這指示資料提供程式設置Value的精度。

Scale(刻度)(System.Byte)要將 Value 解析為的小數位數。預設值0Scale屬性只用於小數和數值輸入參數。

將此屬性設置為資料庫中的值以外的值的結果取決於資料提供程式的實現,並且可能返回錯誤代碼、截斷或舍入的資料。

Scale 屬性只影響其InfoDbType Decimal Numeric 的參數。對於其他資料類型Scale 被忽略。

Size(大小) (System.Int32):獲取或設置列中資料的最大大小(以位元組為單位)。

Value() (System.Object):獲取或設置該參數的值。

 

KeyFields(主鍵欄位)(KeyItem)

指相對SqlCommand所指定主檔的主鍵欄位,一般為PrimaryKey,可以設定多個。此用在當與UpdateComp元件配合時,在Update/Delete語法中所必需定義的Where Keyfield欄位;另一個用途則用在ClientInfoDataSet設定PackedRecord時,會根據KeyFields來取得區間的資料等。

 

MultiSetWhere(bool)

此屬性設為True的時候可以使用MultiSetWhere,具體使用方法請參看檔案【關于SetWhereExcute中傳參數方式的使用】

 

NotificationAutoEnlist(bool)

設為True為應用程式自動接收查詢通知。

 

SecExcept(安全管制例外組群)(string)

可以定義一個或多個例外的群組(UserGroup),該user如果隸屬這些群組時,SecStyle就會失效,如高級主管/財務部門/MIS部門等群組,都是可以不受資料安全機制所管控的。

 

SecFieldName(安全管制欄位)(string)

用來定義SecStyle的欄位名稱,如果SecStyle=ByUser就是指建檔者userid的欄位名稱,如果SecStyle=ByGroup即指此資料的所屬部門(群組)的欄位名稱。

 

SecStyle(安全模式)(enum)

用來控制資料保全的模式,目前可用的模式為:

(1) ByNone不啟動:本InfoCommand不作任何資料保全控管。

(2) ByUser:所有歸屬該User的資料都可以存取,啟動此命令時系統會自動為你加上where 欄位=UserID,因此,此功能必須在InfoCommandTable上必須要有這個欄位來存放UserID

(3) ByGroup:所有歸屬該使用者相對的群組資料都可以存取,啟動此命令時系統會自動為你加上 where 欄位 IN (User群組),此功能必須在InfoCommandTable上必須要有這個欄位來存放GroupID

 

SelectPaging(bool)

設為True會使用新的分段讀取技術來讀取目前的資料庫

 

SelectTop(取前幾筆資料)(int32)

Seletct TOP N的設定值,如果對方為SQL Server時,可用此來增快效能。

 

SiteControl(數據分割)(bool)

用來自動分割多廠或分公司事業體數據的控制,此要配合Client端的Login系統變數(存在CliUtils.fSideCode),在每次啟動 Infocommand時,就會自動加入Where SiteFieldName欄位=fSideCodefSideCode是依每個Client來決定之,而欄位內容則記錄分公司或工廠的代號。此即可依ClientfSideCode自動過濾資料。

 

SiteFieldName(分割欄位)(string)

SiteControl=True時, 則以此欄位名稱做為多公司多廠的欄位名稱。

 

UpdatedRowSource(enum)

設定如何將查詢結果應用在更新的row

(1)None

將忽略任何輸出參數或傳回結果集的rows

(2) OutputParameters

只有輸出參數會對應至 DataSet 中已變更的row

(3) FirstReturnedRecord

只有傳回結果集之第一個row內的資料會對應至 DataSet中已變更的row

(4)Both

輸出參數和傳回結果集的第一個row都會對應至 DataSet中已變更的row

 

【事件】

此元件無事件。

 

【功能函數】

此元件無功能函數。


Top of Page