WebDataset
【功能說明】
用途:此元件用於 Web
的 Component
Desiginer 中,繼承自 InfoDataSet 元件,用來配合 EEP
A/P Server 端的 InfoCommand 相互連接,使得 Web 網頁可以透過對應的 InfoCommand 的 SQL
命令取得 Database
Server 的資料,並實現對網頁上各個元件對資料庫的存取各種操作。
【元件屬性】
Name( 名稱 )(string)
元件名稱,用於識別該元件。
Active( 啟動 )(
bool)
設定當前的 WebDataSet 是否要開啟,設定為 True 時,系統會從 A/P Server 上的 InfoCommand 元件中下載資料到此元件中。此屬性可在設計模式中設定預設 True 或 False 來控制開啟表單時是否要啟動此 InfoDataSet 。
AlwaysClose ( 開啟模式 )( bool)
用來控制在此元件被啟動時是否要去下載資料, True 代表不會去下載 ( 會使用 Where 1=0 的方式將資料表打開但沒有資料 ) , False 則會下載資料到此資料表中。
PackedRecords ( 傳送記錄數 )(
int)
代表每次下載的資料筆數, 當 WebDataSet 要向 InfoCommand 取得資料時,每次要 DownLoad 多少比資料,都是由此屬性來決定,預設為 100 ,代表每次下載一百筆;若為 -1 ,代表要將全部資料下載。除了資料在數千筆以下,否則盡量調整本值在數百筆以內,好讓系統的效能可以增加。 PackedRecord 在資料移出範圍時,系統會自動再從 InfoCommand 上重抓下一個範圍資料,此屬性須配合 InfoCommand 的 KeyFields 才能抓取區塊範圍的資料。
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 Procedure 或 Trigger 引發的資料異動或定序自增值的欄位等 ) ,此時 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 元件中。
bool CanelApply()
將 Client 端的資料放棄不要存檔到後端的 UpdateComp 元件中。
SaveToFile (string
schemaFileName , string
dataFileName)
可以利用此方式輸出到指定的 DataFileName ( 二進位檔案 ), 其資料結構則存在 SchemaFileName 中 , 是以 XML 的格式來存放。 SaveToFile 會輸出一個 XML
的 SchemaFileName ,當你要還原資料時,也必須使用到此 SchemaFileName 才能將資料還原。
LoadFromFile (string
schemaFileName , string
dataFileName)
從指定的檔案中取回資料的數據,與 SaveToFile 的動作剛好相反, SchmaFileName 為資料結構的檔案 (XML 格式 ) , DataFileName 則為指定的資料檔案名稱。
bool SetWhere(string
WhereText)
重新設定 InfoCommand 的 SQL
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 元件,達到回寫資料庫的目的。
| Converted from CHM to HTML with chm2web Pro 2.85 (unicode) |