【功能說明】
用途:屬於Server端的元件,用於對資料庫進行資料存取,提供一個虛擬SQL Command元件,以此SQL命令來取得後端資料庫的資料並傳遞給Client端,此元件可自動依資料庫類型為SQL/ORACLE/OLE
DB等不同的資料庫自動產生對應的.NET Command元件。如要對資料進行儲存操作,則須與UpdateComponent配合使用。
【元件屬性】
Name(名稱)(string)
元件名稱,用於識別該元件。
CommandText(SQL命令)(string)
EEP Server需要用本屬性的SQL命令來直接對資料庫進行存取,一般皆為Select的語法,代理Client從資料庫來取得資料,並傳回給Client。此屬性可以使用SQLBuilder來設定。此SQL語法也可以用Left
Join語法關連多個Table。
CommandTimeout(SQL命令超時時間)(int32)
SQL命令執行的超時時間限定,超過這個時間就表示無法連接。
CommandType(SQL命令類別)(enum)
SQL命令的類別,可選為:
Text:SQL命令句,一般都是設定為Text,預設也是。
StoredProcedure:資料庫的儲存程序。
TableDirect:直接連接資料表,EEP不支援此種模式的連接。
EEPAlias(EEP資料庫名稱)(string)
可指定一個對應的EEP ALIAS(虛擬資料庫,於APPSRV.EXE的「Database Setting」中定義),一般InfoCommand的資料集是不必設定此屬性的,因為會於每個Client在 Login時告之EEP
Server,並讓InfoCommand可以依Client所設定的Database來動態存取資料,這樣做的目的,是為了資料庫名稱可以獨立於系統外面,但如果有多公司多廠的資料須相互整合時,就必須指定特定的資料庫來達到同時存取多個資料庫資料的目的。
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 屬性由 InfoDbType 為 Decimal 的參數使用。用於表示 Value 屬性的最大位元數。預設值為 0。這指示資料提供程式設置 Value 的精度。
Scale(刻度) (System.Byte):要将 Value 解析為的小數位數。默认值为 0。Scale屬性只用於小數和數值输入參數。
將此屬性設置為資料庫中的值以外的值的结果取決於數據提供程序的實現,并且可能返回錯誤代碼、截斷或捨入的數據。
Scale 屬性只影響其InfoDbType为 Decimal 或 Numeric 的參數。對於其他數值類型,Scale 被忽略。
Size(大小)
(System.Int32):獲取或設置列中資料的最大大小(以位元組為單位)。
Value(值)
(System.Object):獲取或設置該參數的值。
KeyFields(主鍵欄位)(KeyItem)
指相對SqlCommand所指定主檔的主鍵欄位,一般為PrimaryKey,可以設定多個。此用在當與UpdateComp元件配合時,在Update/Delete語法中所必需定義的Where Keyfield欄位;另一個用途則用在Client的InfoDataSet設定PackedRecord時,會根據KeyFields來取得區間的資料等。
MultiSetWhere
此屬性設為True的時候可以使用MultiSetWhere,具體使用方法請參看檔案【關于SetWhere和Excute中傳參數方式的使用】
SecStyle(安全模式)(enum)
用來控制資料保全的模式,目前可用的模式為:
(1) ByNone不啟動:本InfoCommand不作任何資料保全控管。
(2) ByUser:所有歸屬該User的資料都可以存取,啟動此命令時系統會自動為你加上where 欄位=UserID,因此,此功能必須在InfoCommand的Table上必須要有這個欄位來存放UserID。
(3) ByGroup:所有歸屬該使用者相對的群組資料都可以存取,啟動此命令時系統會自動為你加上 where 欄位 IN
(該User群組),此功能必須在InfoCommand的Table上必須要有這個欄位來存放GroupID。
SecFieldName(安全管制欄位)(string)
用來定義SecStyle的欄位名稱,如果SecStyle=ByUser就是指建檔者userid的欄位名稱,如果SecStyle=ByGroup即指此資料的所屬部門(群組)的欄位名稱。
SecExcept(安全管制例外組群)(string)
可以定義一個或多個例外的群組(UserGroup),該user如果隸屬這些群組時,SecStyle就會失效,如高級主管/財務部門/MIS部門等群組,都是可以不受資料安全機制所管控的。
SelectTop(取前幾筆資料)(int32)
指Seletct TOP N的設定值,如果對方為SQL Server時,可用此來增快效能。
SiteControl(數據分割)(bool)
用來自動分割多廠或分公司事業體數據的控制,此要配合Client端的Login系統變數(存在CliUtils.fSideCode中),在每次啟動 Infocommand時,就會自動加入Where
SiteFieldName欄位=fSideCode,fSideCode是依每個Client來決定之,而欄位內容則記錄分公司或工廠的代號。此即可依Client的fSideCode自動過濾資料。
SiteFieldName(分割欄位)(string)
當SiteControl=True時, 則以此欄位名稱做為多公司多廠的欄位名稱。
【事件】
此元件無事件。
【功能函數】
此元件無功能函數。