【功能說明】
用途:屬於Server端的元件,用於對資料庫進行資料存取,提供一個虛擬SQL Command元件,以此SQL命令來取得後端資料庫的資料並傳遞給Client端。如要對資料進行儲存操作,則須與UpdateComponent配合使用。
【元件屬性】
ID(名稱)(string)
元件名稱,用於識別該元件。
CommandText(SQL命令)(string)
EEP Server需要用本屬性的SQL命令來直接對資料庫進行存取,一般皆為Select的語法,代理Client從資料庫來取得資料,並傳回給Client。此SQL語法也可以用Left Join語法關聯多個Table。
CommandType(SQL命令類別)(enum)
SQL命令的類別,可選為:
Text:SQL命令句,一般都是設定為Text,預設也是。
StoredProcedure:資料庫的儲存程序。
Database(EEP資料庫名稱)(string)
可指定一個對應的DB,一般InfoCommand的資料集是不必設定此屬性的,因為會於每個Client在 Login時告知EEP Server,並讓InfoCommand可以依Client所設定的Database來動態存取資料,這樣做的目的,是為了資料庫名稱可以獨立於系統外面,但如果有多公司多廠的資料須相互整合時,就必須指定特定的資料庫來達到同時存取多個資料庫資料的目的。
RuntimeDatabase(Runtime資料庫名稱)(string)
可指定一個對應的DB,此為Runtime時才使用的DB,設計與預覽則使用原本的DB。
Keys(主鍵欄位)(KeyItem)
指相對SqlCommand所指定主檔的主鍵欄位,一般為PrimaryKey,可以設定多個。此用在當與UpdateComp元件配合時,在Update/Delete語法中所必須定義的Where Keyfield欄位。
SecStyle(安全模式)(enum)
用來控制資料安全的模式,目前可用的模式為:
(1) None不啟動:本InfoCommand不作任何資料安全控管。
(2) User:所有歸屬該User的資料都可以存取,啟動此命令時系統會自動為你加上where 欄位=UserID,因此,此功能必須在InfoCommand的Table上必須要有這個欄位來存放UserID。
(3) Group:所有歸屬該使用者相對的群組資料都可以存取,啟動此命令時系統會自動為你加上 where 欄位 IN (該User群組),此功能必須在InfoCommand的Table上必須要有這個欄位來存放GroupID。
(4)Role : 所有歸屬該使用者相對的角色資料都可以存取,啟動此命令時系統會自動為你加上 where 欄位 IN (該User角色),此功能必須在InfoCommand的Table上必須要有這個欄位來存放RoleID。
SecField(安全管制欄位)(string)
用來定義SecStyle的欄位名稱,如果SecStyle=ByUser就是指建檔者userid的欄位名稱,如果SecStyle=ByGroup即指此資料的所屬部門(群組)的欄位名稱。
SecExcept(安全管制例外)(string)
可以定義一個或多個例外的用戶(User)/群組(Group)/角色(Role),此屬性要搭配SecStyle作使用,SecStyle=User那SecExcept要填Userid,SecStyle=Group, SecExcept則填GroupID,如果是多個則以”,”或”;”隔開。
SiteField(分割欄位)(string)
SelectPaging(分頁讀取)(bool)
會針對資料表的Key值欄位排序來取得一個次序編號,並以這個編號作為分頁的依據來直接定位分段資料且將資料取出。
CacheData(緩存數據)(bool)
對於已加載的資料會緩存下來,不必每次重新撈取。
CacheTTL(緩存時間)(string)
以分為單位,預設24小時(1440分)。時間到會自動清除緩存資料。
Parameters(參數)(InfoParameters)
用於Stored Procedure,包括以下屬性:
(1)Name(參數名)(System.String):參數名
(2)SqlType(類型) (Srvtools.InfoDbType):設定該參數在資料庫中對應的欄位類型。
(3)Value(值) (System.Object):獲取或設置該參數的值。
NonLogon(免登入)(bool)
此屬性是搭配免登入功能做使用,如果有使用免登入功能的頁面,該RWD表單所對應的Server端如果有用到InfoCommand組件的話,也須將NonLogon屬性設為True才能讓免登入的用戶存取數據。
【事件】
OnBeforeExecuteSQL(infocommand執行前):ExecuteSQL前所要執行的事件。
OnAfterExecuteSQL(infocommand執行後):ExecuteSQL後所要執行的事件。