簡述ADO處理數(shù)據(jù)異步執(zhí)行方式詳細(xì)說明介紹
在ADO處理數(shù)據(jù)中,通過規(guī)定連接和命令文本,你可以創(chuàng)建一個(gè)Recordset 對(duì)象.對(duì)于游標(biāo)的位置和類型Recordset有一些規(guī)定.你可以按下面的方法來讀取數(shù)據(jù),但是除了同步執(zhí)行方式之外,ADO處理數(shù)據(jù)也提供了異步執(zhí)行的方式
而當(dāng)ADO處理數(shù)據(jù)完畢之后,ADO會(huì)以事件的方式通知應(yīng)用程序,此時(shí)應(yīng)用程序可以再根據(jù)ADO執(zhí)行的結(jié)果來采取相應(yīng)的動(dòng)作。使用異步執(zhí)行方式有許多用途,例如,如果應(yīng)用程序需要處理花費(fèi)大量時(shí)間的動(dòng)作,那么ADO可以選擇以異步執(zhí)行方式讓ADO在后臺(tái)執(zhí)行,而讓應(yīng)用程序繼續(xù)處理圖形用戶接口或用戶輸入的數(shù)據(jù)。
在ADO中使用異步執(zhí)行方式非常簡單,只需要對(duì)ADO數(shù)據(jù)集的ExecuteOptions屬性值進(jìn)行適當(dāng)?shù)脑O(shè)定即可。現(xiàn)在就讓我們以一實(shí)際的范例應(yīng)用程序來說明如何讓ADO以異步的方式來處理數(shù)據(jù)
1) 在D e l p h i集成開發(fā)環(huán)境中關(guān)閉所有的項(xiàng)目。
2) 建立一個(gè)新的應(yīng)用程序項(xiàng)目,在主窗體中放入TA D O C o n n e c t i o n對(duì)象連接到數(shù)據(jù)庫。
3) 在主窗體中放入TA D O D a t a S e t組件。設(shè)定它的C o n n e c t i o n屬性值為步驟2) 的TA D O C o n n e c t i o n,并且在它的C o m m a n d Te x t屬性值中使用Select * from ADOTe s t D a t a s以取得所有的ADO處理數(shù)據(jù)。再設(shè)定它的A c t i v e屬性值為Tr u e以打開范例數(shù)據(jù)表。
4) 放入TDataSource組件,設(shè)定它的DataSet屬性值為步驟3) 加入的TADODataSet組件。#t#
5) 放入T D B N a v i g a t o r和T D B G r i d組件,設(shè)定它們的D a t a S o u r c e組件為步驟4加入的T D a t a S o u r c e組件。
6) 在主窗體中放入兩個(gè)T B u t t o n組件以及一個(gè)T P r o g r e s s B a r組件,并且設(shè)定它的相關(guān)屬性值。
7) ***在主窗體中放入一個(gè)TA D O C o m m a n d組件。設(shè)定它的C o n n e c t i o n屬性值為步驟2) 的TA D O C o n n e c t i o n,并且在它的C o m m a n d Te x t屬性值中使用S e l e c t count(*) from ADOTe s t D a t a s以便從A D O Te s t D a t a s數(shù)據(jù)表中取得所有數(shù)據(jù)的筆數(shù)。
8) 在主窗體的ADO處理數(shù)據(jù)序中撰寫如下的程序代碼:
- p r o c e d u r e TForm1.FormActivate(Sender: TObject);
- v a r
- sRecNo : String;
- b e g i n
- ProgressBar1.Max := ADOCommand1.Execute.Fields.Item[0].Value;
- sRecNo := IntToStr(ProgressBar1.Max);
- Self.Caption := '共有' + sRecNo + ' 筆數(shù)據(jù)' ;
- e n d ;
9) 雙擊窗體中的e o A s y n c F e t c h N o n B l o c k i n g按鈕,并且在它的O n C l i c k事件處