附錄附錄\Appendix Web端元件\WebDataSet

WebDataSet

 

 

【功能說明】

用途:此元件用於WebComponent Desiginer中,繼承自InfoDataSet元件,用來配合EEP A/P Server端的InfoCommand相互連接,使得Web網頁可以透過對應的InfoCommandSQL命令取得Database Server的資料,並實現對網頁上各個元件對資料庫的存取各種操作。

【元件屬性】

Name(名稱)(string)

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

Active(啟動)(bool)

設定當前的WebDataSet是否要開啟,設定為True時,系統會從A/P Server上的InfoCommand元件中下載資料到此元件中。此屬性可在設計模式中設定預設TrueFalse來控制開啟表單時是否要啟動此InfoDataSet

AlwaysClose(開啟模式)(bool)

用來控制在此元件被啟動時是否要去下載資料,True代表不會去下載(會使用Where 1=0的方式將資料表打開但沒有資料)False則會下載資料到此資料表中。

PackedRecords(傳送記錄數)(int)

代表每次下載的資料筆數,當WebDataSet要向InfoCommand取得資料時,每次要DownLoad多少比資料,都是由此屬性來決定,預設為100,代表每次下載一百筆;若為 -1,代表要將全部資料下載。除了資料在數千筆以下,否則盡量調整本值在數百筆以內,好讓系統的效能可以增加。PackedRecord在資料移出範圍時,系統會自動再從InfoCommand上重抓下一個範圍資料,此屬性須配合InfoCommandKeyFields才能抓取區塊範圍的資料。

RemoteName(遠程InfoCommand)(string)

A/P Server上,每個InfoDataModule都可以有多個遠程資料表(InfoCommand),透過InfoCommand可以向Database取得資料,在將資料存放在本元件的Table元件中,以提供Client各元件的資料存取服務。RemoteName的格式是 DLL.CommandName,前者是DLL的模組名稱,後者則是InfoCommand的名稱。設計模式時可以在此選擇DataModule名稱(DLL)與所對應的InfoCommand名稱。


ServerModify(隨伺服端更新)(bool)

此屬性是設定如果Server端在Insert/Update後,如果後端的資料庫有發生其他的異動 (Stored ProcedureTrigger引發的資料異動或定序自增值的欄位等),此時Client的資料則不是最新的,透過此屬性就可以將最新的資料傳回Client端,但此屬性必須配合UpdateComp.ServerModify也要設定為True才會有效。

 

【事件】

DataFilled(資料填入)

在取得的InfoCommand的資料後,會觸發該事件。

 

【功能函數】

First()

移動到第一筆。

 

Next()

移動到下一筆。

Prior()

移動到前一筆。

 

Last()

移動到最後一筆。

IsInserted(TableName)

用來判斷DataSet中指定的Table是否已經有Insert發生。

IsUpdated(TableName)

用來判斷DataSet中指定的Table是否已經有Update發生。

IsDeleted(TableName)

用來判斷DataSet中指定的Table是否已經有Delete發生。

bool  ApplyUpdates()

Client端的資料存檔到後端的UpdateComp元件中。

LoadFromFile(string schemaFileNamestring dataFileName)

從指定的檔案中取回資料的數據,與SaveToFile的動作剛好相反,SchmaFileName為資料結構的檔案(XML格式)DataFileName則為指定的資料檔案名稱。

bool  SetWhere(string WhereText)

重新設定InfoCommandSQL Where語句,到Server端重新取得資料。WhereText代表Where的語法,會自動與Server上的InfoCommand結合。

例如:InfoDataSet1.SetWhere”CUST_NO LIKE C%”

DataSet  Excute(string SQLText)

重新下SQL語句到Server端取得資料,SQLText為你重新所下達的SQL語法,其傳回值為一個DataSet,可以利用此DataSet來存放資料。

例如:

InitializeComponent(); //Web上有執行此命令才能讓WebDataSet存在

DataSet tmp;

Tmp=WebDataSet1.Excute”SELECT * FROM CUSTOMER”;

Int max_ar=0;

for (int i = 0; i < Tmp.Tables[0].Rows.Count; i++)

  {  int aramt=Tmp.Tables[0].Rows[0][‘AR_AMT’].Toint();

if (aramt>max_ar)  max_ar=aramt;

   }

return max_ar;

ToExcel(string TableName,string XLSFileName)

可以直接指定一個Table來輸出成Excel檔案。XLSFileName可以包函Path

 

【其他說明】

Web網頁使用WebDataSet元件時,由於此元件不是網頁中的元件,因此無法利用Web元件的EnableViewState,就是在前後網頁中能保存狀態(可以保存元件的屬性與記憶體),因此在每次使用到WebDataSet時,必須事先執行InitializeComponent()這個指令,才會讓”Component Designer”內的元件重現,一般情況下WebDataSource會將WebDataSet的資料取走,並利用EnableViewState緩存資料,所以User在操作前後網頁時,不會一直去打開WebDataSet與讓WebDataSource資料取重新讀取;另一方面WebDataSet負責提供資料給WebDataSource,而WebDataSource負責提供資料給所有Web的元件,如果資料可以編輯也是一樣,異動到WebDataSource也會影響到WebDataSet,並透過WebDataSet來回存到A/P Server上的UpdateComp元件,達到回寫資料庫的目的。

 

 

Top of Page