用TADOTable組件操縱數(shù)據(jù)_第1頁
用TADOTable組件操縱數(shù)據(jù)_第2頁
用TADOTable組件操縱數(shù)據(jù)_第3頁
用TADOTable組件操縱數(shù)據(jù)_第4頁
用TADOTable組件操縱數(shù)據(jù)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

用TADOTable組件操縱數(shù)據(jù)7.1TADOTable組件概述作為數(shù)據(jù)集組件,TADOTable、TADODataSet、TADOQuery和TADOStoreProc組件都是繼承自父類TCustomADODataSet,TCustomADODataSet是由TDataSet繼承而來,如圖7-1所示。所以它們在屬性、事件及方法上有許多相同的地方。

TADOTable組件只能通過ADO訪問數(shù)據(jù)庫中單個數(shù)據(jù)表的數(shù)據(jù)7.1TADOTable組件概述7.1.1TADOTable組件的屬性1.ADO數(shù)據(jù)集組件的共同屬性屬性說明ActiveActive屬性指定數(shù)據(jù)集是否處于打開狀態(tài)。設(shè)置Active屬性為True,則數(shù)據(jù)集被打開;設(shè)置Active屬性為False,則數(shù)據(jù)集被關(guān)閉。StateState屬性表明了當前數(shù)據(jù)集的狀態(tài)CacheSize指定數(shù)據(jù)集的緩沖區(qū)大小。CommandTimeoutCommandTimeout屬性是一個整型數(shù),指定執(zhí)行一個命令的最大允許時間,默認值是30秒。Connection指定所使用的數(shù)據(jù)源連接組件的名稱,即TADOConnection組件的名稱。ConnectionString即連接字符串,用于指定數(shù)據(jù)庫的連接信息。CursorLocation指定數(shù)據(jù)庫記錄指針是采用客戶端模式還是服務(wù)器端模式。CursorType指定在數(shù)據(jù)集中使用的記錄指針類型。AutoCalcFields設(shè)為True則允許應(yīng)用程序觸發(fā)OnCalcFields事件。BOF為True時,表示當前指針指向第一條記錄,否則為False。EOF為True時,表示當前指針指向最后一條記錄,否則為False。Bookmark在數(shù)據(jù)集中設(shè)定標記,用于在一個數(shù)據(jù)集中獲得或者設(shè)置當前記錄。Filter設(shè)置過濾條件。7.1TADOTable組件概述Filtered相當于過濾的開關(guān),當Filtered屬性的值為True時,數(shù)據(jù)集從數(shù)據(jù)庫中獲取符合條件的記錄;當Filtered屬性的值為False時不執(zhí)行過濾。FilterOptions確定過濾方式。FieldCount返回該數(shù)據(jù)集的字段數(shù)。FieldDefList返回數(shù)據(jù)集字段定義列表。FieldDefs表明數(shù)據(jù)集中字段的定義信息。如字段的數(shù)據(jù)類型、數(shù)據(jù)長度、名稱等。FieldList數(shù)據(jù)集中字段組件的連續(xù)列表。Fields數(shù)據(jù)集中字段的集合,用于訪問數(shù)據(jù)集中的字段。FieldValues可訪問當前記錄所有字段值列表。Found表示FindFirst、FindNext、FindLast或者FindPrior是否成功。IndexName指定當前使用的索引。LockType指定了數(shù)據(jù)集打開數(shù)據(jù)庫時,對數(shù)據(jù)表中的記錄的鎖定類型。MaxRecords指定記錄集中一次允許從數(shù)據(jù)庫中返回的最大記錄數(shù)。默認值為0,表示不限制返回行數(shù)。Modified表示數(shù)據(jù)集是否被更改了。布爾型。Name數(shù)據(jù)集組件名稱RecNo數(shù)據(jù)集的記錄號。RecordCount與數(shù)據(jù)集相關(guān)的記錄總數(shù)。RecordSize表示數(shù)據(jù)集中記錄緩沖區(qū)的大小。7.1TADOTable組件概述2.對重要屬性的說明Active屬性

Active屬性確定數(shù)據(jù)集是否處于打開狀態(tài)。設(shè)置Active屬性為True,則數(shù)據(jù)集被打開,相當于調(diào)用Open方法,可以對數(shù)據(jù)庫進行讀或?qū)懖僮?;設(shè)置Active屬性為False,則數(shù)據(jù)集被關(guān)閉,相當于調(diào)用Close方法。設(shè)置Active為True,將觸發(fā)BeforeOpen事件,然后設(shè)置state屬性為dsBrowse,打開一個數(shù)據(jù)庫游標,然后觸發(fā)AfterOpen事件。設(shè)置Active為False,將觸發(fā)BeforeClose事件,然后設(shè)置state屬性為dsInactive,最后觸發(fā)AfterClose事件。在更改影響到數(shù)據(jù)庫的狀態(tài)或數(shù)據(jù)顯示組件的狀態(tài)的數(shù)據(jù)集屬性時,要提前將數(shù)據(jù)集的Active屬性設(shè)置為False。7.1TADOTable組件概述(2)State屬性State屬性表明了當前數(shù)據(jù)集的狀態(tài),其取值的含義見表。狀態(tài)值含義dsInactive數(shù)據(jù)集處于關(guān)閉狀態(tài)dsSetKey數(shù)據(jù)集處于查找鍵狀態(tài)dsBrowse數(shù)據(jù)集處于瀏覽狀態(tài),用戶可以瀏覽數(shù)據(jù),但不能修改dsEdit數(shù)據(jù)集處于編程狀態(tài)dsInsert數(shù)據(jù)集處于插入狀態(tài)dsCalcFields數(shù)據(jù)集處于計算字段數(shù)據(jù)時的狀態(tài),這時不能修改數(shù)據(jù)dsFilter數(shù)據(jù)集處于過濾狀態(tài),可以顯示數(shù)據(jù),不能修改dsNewValue這是一個臨時狀態(tài),當某個字段對應(yīng)的TField組件的NewValue屬性被修改時數(shù)據(jù)集處于這個狀態(tài)。dsOldValue這是一個臨時狀態(tài),當某個字段對應(yīng)的TField組件的OldValue屬性被修改時數(shù)據(jù)集處于這個狀態(tài)。dsCurValue這是一個臨時狀態(tài),當某個字段對應(yīng)的TField組件的CurValue屬性被修改時數(shù)據(jù)集處于這個狀態(tài)。dsBlockRead數(shù)據(jù)集處于禁止讀取狀態(tài)dsInternalCalc數(shù)據(jù)集處于內(nèi)部計算狀態(tài)dsOpening數(shù)據(jù)集處于正被打開的狀態(tài)7.1TADOTable組件概述(3)Connection屬性和ConnectionString屬性指定所使用的數(shù)據(jù)源連接組件的名稱,即TADOConnection組件的名稱。(4)CacheSize屬性指定數(shù)據(jù)集的緩沖區(qū)大小。數(shù)據(jù)集首先把數(shù)據(jù)從數(shù)據(jù)庫中取出,然后保存在內(nèi)存的一塊區(qū)域中,這塊內(nèi)存區(qū)域就是所謂的緩沖區(qū)。如果設(shè)置CacheSize屬性值為20則表示數(shù)據(jù)集將一次從數(shù)據(jù)庫中提取20條記錄,并將這20條記錄保存在緩沖去中。缺省值為1,也是其最小值。(5)CursorLocation屬性指定數(shù)據(jù)庫游標是采用客戶端模式還是服務(wù)器端模式。clUseServer使用服務(wù)器端的數(shù)據(jù)庫游標,適用于數(shù)據(jù)量大的數(shù)據(jù)集;clUseClient使用客戶端的數(shù)據(jù)庫游標的時候,數(shù)據(jù)將被下載到本地計算機上,并在本地進行操作;7.1TADOTable組件概述(6)AutoCalcFields屬性該屬屬設(shè)為True則允許應(yīng)用程序觸發(fā)OnCalcFields事件。計算字段依賴于當前記錄的一個或多個字段,通過已有的字段數(shù)據(jù)進行計算。(7)BOF屬性和EOF屬性BOF屬性和EOF屬性用于判斷當前記錄指針的位置是否位于文件開始和結(jié)束處。它們都是只讀的,為Boolean型。BOF屬性為True時,表示當前指針指向第一條記錄。EOF屬性為True時,表示當前指針指向最后一條記錄。例如:ifADOTable1.BOFandADOTable1.EOFthenShowMessage(‘數(shù)據(jù)集是空的?!?;(8)Fields屬性數(shù)據(jù)集中的字段集合,用于訪問數(shù)據(jù)集中的字段。7.1TADOTable組件概述例如:Edit1.Text:=ADOTable1.Fields.Fields[6].AsString;//讀取字段值A(chǔ)DOTable1.Edit;//將數(shù)據(jù)集設(shè)為編輯狀態(tài)ADOTable1.Fields.Fields[6].AsString:=Edit1.Text;//設(shè)置字段值A(chǔ)DOTable1.Post;//提交到數(shù)據(jù)庫保存7.1TADOTable組件概述3.TADOTable組件特有的屬性(1)MasterSource屬性指定一個數(shù)據(jù)源組件用于主-細表關(guān)系。該數(shù)據(jù)源組件所連接的數(shù)據(jù)集組件將作為主表用于與本數(shù)據(jù)集組件建立主-細表關(guān)系。(2)ReadOnly屬性指定數(shù)據(jù)集中的數(shù)據(jù)是否只讀。(3)TableDirect屬性指定這個表是通過表名訪問還是通過SQL語句訪問(僅限Select語句)。TableDirect屬性為True表示可以通過SQL語句訪問,為False,則只能通過表名訪問。默認為False。(4)TableName屬性指定數(shù)據(jù)表名,數(shù)據(jù)集從中讀取數(shù)據(jù)。7.1TADOTable組件概述7.1.2TADOTable組件的方法1.ADO數(shù)據(jù)集類組件的共同方法方法說明ActiveBuffer返回一個PChar,包含激活記錄的數(shù)據(jù)Append添加一個新的記錄到數(shù)據(jù)集中AppendRecord添加一個新的記錄到數(shù)據(jù)集中。以數(shù)組參數(shù)傳遞來的值填充字段BookmarkValid該方法傳遞一個Bookmark參數(shù),如果此Bookmark在數(shù)據(jù)集中有效則返回TrueCancel取消對數(shù)據(jù)集的修改,并設(shè)置數(shù)據(jù)集的狀態(tài)為dsBrowseCancelBatch在批更新模式下,撤銷一批正等待處理的更新CancelUpdates撤消一個準備執(zhí)行的更新操作。用于一般更新模式,在Post執(zhí)行之前調(diào)用Clone克隆另外一個數(shù)據(jù)集到當前調(diào)用組件CheckBrowseMode當前記錄更改時,自動提交或取消數(shù)據(jù)更改。ClearFields清除激活記錄的所有字段值Close關(guān)閉數(shù)據(jù)集CompareBookmarks比較兩個書簽,如果這兩個書簽引用同樣的記錄則返回0,如果第一個書簽指定所引用的記錄在數(shù)據(jù)集中的位置比第二個書簽在數(shù)據(jù)集中的位置靠前則返回一個小于0的值,否則返回一個大于0的值ControlsDisabledBoolean特性,表示相應(yīng)的控件是否失效7.1TADOTable組件概述方法說明Create構(gòu)造函數(shù)CreateBlobStream從一個Field參數(shù)創(chuàng)建一個BlobStreamCursorPosChanged使內(nèi)部光標定位無效Delete刪除當前的記錄DeleteRecords刪除記錄集中的一行或多行記錄。Destroy析構(gòu)函數(shù)DisableControls在更新過程中使相應(yīng)的控件無效Edit將記錄的狀態(tài)設(shè)置為dsEdit;記錄在編輯模式下EnableControls使相應(yīng)的控件有效FieldByName返回動態(tài)的TField,通過字段名搜索FindField如果找到指定的字段名則返回一個TField;否則返回nilFindFirst返回一個Boolean值,表示查找的成功或者失??;將光標定位在數(shù)據(jù)集中的第一個記錄上FindLast返回一個Boolean值,表示查找的成功或者失敗;將光標定位在數(shù)據(jù)集中的最后一個記錄上FindNext返回一個Boolean值,表示查找的成功或者失?。粚⒐鈽硕ㄎ辉跀?shù)據(jù)集中當前記錄的下一個記錄上7.1TADOTable組件概述方法說明FindPrior返回一個Boolean值,表示查找的成功或者失??;將光標定位在數(shù)據(jù)集中當前記錄的前一個記錄上First將光標定位在第一條記錄上FreeBookmark該方法傳遞一個用GetBookmark方法返回的書簽,釋放這個書簽GetBlobFieldData返回BLOB字段值,根據(jù)FieldNo將值返回到一個字節(jié)數(shù)組:TBlobFieldDataGetBookmark返回代表當前記錄的書簽GetCurrentRecord返回一個Boolean值,表示Buffer參數(shù)是否被當前記錄緩沖區(qū)的值所填充GetDetailDataSets用每一個嵌套的數(shù)據(jù)集填充TList參數(shù)GetDetailLinkFields用字段組件(此組件構(gòu)成了一個主細節(jié)關(guān)系)填充兩個TList參數(shù)GetFieldData如果成功的話以字段數(shù)據(jù)填充一個緩沖區(qū)GetFieldList將所有由FieldNames參數(shù)指定的字段組件拷貝到TList參數(shù)中GetFieldNames返回數(shù)據(jù)集中所有字段名的一個列表,保存在TStrings參數(shù)中GetIndexNames獲取當前數(shù)據(jù)集的索引名稱的列表。GotoBookmark將光標定位到由Bookmark參數(shù)指定的記錄中Insert將數(shù)據(jù)集設(shè)置為插入模式(State=dsInsert)InsertRecord插入一個記錄,字段值由傳遞過來的變體數(shù)的常量數(shù)組填充7.1TADOTable組件概述方法說明IsEmpty一個Boolean值,表示數(shù)據(jù)集是否為空IsLinkedTo如果數(shù)據(jù)集已經(jīng)連接到參數(shù)TDataSource,則返回TrueIsSequenced如果數(shù)據(jù)庫表格由數(shù)據(jù)集表示則返回True,表示記錄號碼是否代表記錄的順序Last將光標定位到數(shù)據(jù)集中的最后一個記錄LoadFromFile從一個文件中讀以數(shù)據(jù)到ADO數(shù)據(jù)集中。Locate定位一條記錄并把這條記錄作為當前記錄。如果找到記錄則返回TrueLookup由找到的記錄中返回指定字段的值MoveBy將光標定位到由當前記錄加上偏移量所代表的記錄上Next將光標定位到下一個記錄Open打開數(shù)據(jù)集Post將記錄中的修改發(fā)送到數(shù)據(jù)庫Prior將光標定位到前一個記錄Refresh重新從數(shù)據(jù)庫讀取數(shù)據(jù)Requery刷新記錄集,可以保持數(shù)據(jù)集的數(shù)據(jù)和數(shù)據(jù)庫一致Resync從數(shù)據(jù)庫中重新獲取前一個、當前的和下一個記錄7.1TADOTable組件概述方法說明SaveToFile與LoadFromFile方法對應(yīng),將一個ADO數(shù)據(jù)集中的數(shù)據(jù)保存到一個文件中Seek使用當前索引搜索記錄,并移動數(shù)據(jù)集的指針。SetFields變體數(shù)組參數(shù)(這個數(shù)組中的值被傳遞到記錄的字段中)設(shè)置字段值;狀態(tài)必須設(shè)置為dsEdit或者dsInsertTranslate拷貝源字符串到目標字符串,使字符串值在ANSI字符映射和BDE字符映射之間進行轉(zhuǎn)換UpdateBatch在批更新模式下,將一批更新提交到數(shù)據(jù)庫。UpdateCursorPos內(nèi)部使用,以確保該光標被定位在激活的記錄上UpdateRecord用于更新數(shù)據(jù)感知控件和數(shù)據(jù)集,以反映記錄的更改UpdateStatus高速緩存的記錄更新狀態(tài)(usUnmodified,usModified,usInserted,usDeleted)7.1TADOTable組件概述2.重要方法的說明及使用(1)打開(Open)和關(guān)閉(Close)數(shù)據(jù)集的方法調(diào)用Open方法將Active屬性設(shè)置為True。當Active屬性為True時,可以從數(shù)據(jù)庫中讀取數(shù)據(jù)或向數(shù)據(jù)庫中寫數(shù)據(jù)。調(diào)用Close方法設(shè)置Active屬性值為False。當Active屬性值為False時,數(shù)據(jù)集將被關(guān)閉,無法對數(shù)據(jù)庫進行讀/寫操作。例如:在實際程序代碼中,語句:ADOTable1.Open;就等價于語句:ADOTable1.Active:=True;而語句:ADOTable.Close;等價于語句:ADOTable1.Active:=False;7.1TADOTable組件概述(2)DeleteRecords方法刪除記錄集中的記錄。(3)SaveToFile方法把當前數(shù)據(jù)集中的數(shù)據(jù)按照指定的格式保存到指定的文件中,F(xiàn)ileName為指定的文件名,F(xiàn)ormat為保存的文件格式。(4)GetIndexNames方法查詢表中的全部索引名,返回值將保存在參數(shù)List中,調(diào)用方法為:ADODataSet1.GetIndexNames(ListBox1.Items);(5)FieldByName方法FieldByName方法是根據(jù)一個特定的字段名查詢一個字段。FieldName是一個已存在的字段名。當只知道字段名時,可以調(diào)用FieldByName來獲取關(guān)于該字段的信息。7.1TADOTable組件概述(6)關(guān)于立即更新和批更新ADO數(shù)據(jù)集可支持兩類更新模式:立即更新和批更新。使用立即更新,一旦調(diào)用Update方法,對數(shù)據(jù)的所有更改被立即寫入數(shù)據(jù)庫。使用批更新,可以將多個記錄的更改存入緩存,然后用UpdateBatch方法一次寫入到數(shù)據(jù)庫。默認情況下為立即更新模式。要設(shè)置為批更新模式,必須設(shè)置下列屬性的值:CursorType屬性為ctKeySet(默認)或ctStatic;LockType屬性為ltBatchOptimistic。7.1TADOTable組件概述7.1.3TADOTable組件的事件

TADOTable組件與其他ADO數(shù)據(jù)集組件具有完全相同的事件,如下表所示。事件說明AfterCancel在Cancel方法之后觸發(fā)該事件AfterClose在Close方法之后觸發(fā)該事件AfterDelete在Delete方法之后觸發(fā)該事件AfterEdit在數(shù)據(jù)集設(shè)置為編輯模式之后觸發(fā)該事件AfterInsert當一個新記錄插入到該數(shù)據(jù)集中時觸發(fā)該事件AfterOpen打開數(shù)據(jù)集之后觸發(fā)該事件AfterPost在Post方法之后觸發(fā)該事件(比如說,當當前記錄被修改了且激活的記錄被更新的時候?qū)⒂|發(fā)該事件)AfterRefreshRefresh方法之后觸發(fā)該事件AfterScroll當光標定位被改變的時候觸發(fā)該事件BeforeCancel當調(diào)用Cancel方法的時候,在執(zhí)行Cancel行為之前觸發(fā)該事件BeforeClose當調(diào)用Close方法的時候,在執(zhí)行Close行為之前觸發(fā)該事件BeforeDelete當調(diào)用Delete方法的時候,在執(zhí)行Delete行為之前觸發(fā)該事件7.1TADOTable組件概述事件說明BeforeEdit當調(diào)用Edit方法的時候,在執(zhí)行Edit行為之前觸發(fā)該事件BeforeInsert當調(diào)用Insert方法的時候,在記錄被插入到數(shù)據(jù)集之前觸發(fā)該事件BeforeOpen當調(diào)用open方法的時候,在數(shù)據(jù)集被打開之前觸發(fā)該事件BeforePost當調(diào)用Post方法的時候,在記錄被發(fā)送到數(shù)據(jù)集之前觸發(fā)該事件BeforeScroll當調(diào)用Scroll的時候,在光標位置改變之前觸發(fā)該事件OnCalcFields當Calculated字段需要指定一個值的時候觸發(fā)該事件OnDeleteError當執(zhí)行Delete操作的時候,如果發(fā)生了一個EDatabaseEngine異常,將由CheckOperation觸發(fā)該事件OnEditError在修改或添加記錄時產(chǎn)生了意外會觸發(fā)該事件OnEndOfRecordset在記錄指針試圖移動到末尾之后時發(fā)生OnFetchComplete當一次從數(shù)據(jù)庫讀取數(shù)據(jù)的操作完成時觸發(fā)該事件OnFetchProgress在異步方式運行時,數(shù)據(jù)集組件讀取數(shù)據(jù)時會周期性觸發(fā)該事件OnFieldChangeComplete當某個字段被更新后觸發(fā)該事件OnFilterRecord編寫這個事件處理程序來測試過濾條件對于每個記錄的過濾過程OnMoveComplete在一次記錄指針移動完成后觸發(fā)該事件OnNewRecord當一個新的記錄添加到數(shù)據(jù)集中的時候觸發(fā)該事件OnPostError在提交修改的記錄時產(chǎn)生了意外會觸發(fā)該事件7.1TADOTable組件概述事件說明OnRecordChangeComplete當一條記錄被修改完成后觸發(fā)該事件OnRecordsetChangeComplete當記錄刷新后觸發(fā)該事件OnRecordsetCreate在記錄集被初始化完成后觸發(fā)該事件OnWillChangeField在字段更新之前發(fā)生OnWillChangeRecord在記錄被改變之前發(fā)生OnWillChangeRecordset在記錄集被更新之前發(fā)生OnWillMove在移動記錄指針之前發(fā)生7.2記錄的讀取與修改7.2.1Field對象

Field對象對應(yīng)著數(shù)據(jù)集中的字段。Field對象可以在應(yīng)用程序運行的過程中動態(tài)地產(chǎn)生,也可以利用字段編輯器創(chuàng)建成為永久字段。

TField類封裝了所有字段操作的行為和數(shù)據(jù)類型,它的屬性、方法和事件被用于:(1)改變數(shù)據(jù)集中字段的值。(2)將字段的值由一種類型轉(zhuǎn)換為另一種類型。(3)驗證用戶為字段鍵入的數(shù)據(jù)。(4)定義字段中的數(shù)據(jù)如何顯示和編輯。(5)計算字段的值,當OnCalcFields產(chǎn)生時。7.2.2使用Fields屬性

TFields有兩個基本屬生。一個是Count屬性,指明Fields對象中的字段數(shù);一個是Fields屬性,包含F(xiàn)ields對象7.2記錄的讀取與修改所管理的字段列表,通過指定索引號,可以訪問單字段,索引號從0開始。7.2.3使用FieldValues屬性使用FieldValues屬性,可以通過字段名讀取字段的值。如果要顯示name字段的內(nèi)容,可使用語句:showmessage(adotable1.FieldValues['name']);

FieldValues是數(shù)據(jù)集默認屬性,因此,使用下面的語句效果是一樣的。

showmessage(adotable1['name']);7.2.4使用FieldByName方法

FieldByName方法返回指定名稱的字段對象,因此,可以使用FieldByName方法完成對字段的操作。7.3記錄的添加與刪除7.3.1記錄的添加可以使用數(shù)據(jù)集組件的Append、Insert、AppendRecord、InsertRecord方法添加記錄,其中Append是在表末尾添加一條空白記錄,Insert是在表的當前位置添加一條空白記錄,AppendRecord用于在表末追加一條記錄并對其賦值,InsertRecord是在表的當前位置添加一條記錄并對其賦值。1.使用Append和Insert方法添加記錄2.使用AppendRecord、InsertRecord方法添加記錄7.3.2記錄的刪除1.使用Delete方法2.使用DeleteRecords方法(1)刪除當前記錄(2)刪除所有記錄7.4數(shù)據(jù)查詢

ADO數(shù)據(jù)集組件提供的有關(guān)數(shù)據(jù)查詢的方法有3個:Locate方法、lookup方法和Seek方法。7.4.1Locate方法定位一條記錄并把這條記錄作為當前記錄。7.4.2Lookup方法搜索符合條件的記錄,獲取指定字段的值。找到記錄后,記錄指針不移動。7.4.3Seek方法搜索記錄并移動數(shù)據(jù)集的指針。7.5記錄指針每一個激活的數(shù)據(jù)集都有一個記錄指針指向數(shù)據(jù)集中當前記錄。在窗體中,TDBEdit、TDBText、TEBMemo等組件顯示的數(shù)據(jù)就是當前記錄的字段值。通過移動記錄指針,可以改變當前記錄。例如:在數(shù)據(jù)集組件ADOTable1中移動記錄指針到第一條記錄:ADOTable1.First;移動記錄指針到最后一條記錄:ADOTable1.Last;向后移一條記錄:ADOTable.Next;向前移一條記錄:ADOTable.Prior;向前移2條記錄:7.5記錄指針ADOTable1.MoveBy(-2);判斷數(shù)據(jù)集為空:ifADOTable1.BofandADOTable1.eofthenShowMessage('記錄集為空。');7.6數(shù)據(jù)過濾當我們在操作數(shù)據(jù)集時,往往需要對數(shù)據(jù)進行篩選。選用數(shù)據(jù)集組件Filter屬性、Filtered屬性、FilterOptions屬性可以實現(xiàn)該功能,其行為類似于SQL語句中的WHERE子句。7.6.1利用TADOTable的Filter屬性和Filtered屬性1.在設(shè)計時設(shè)置Filter屬性例如,設(shè)置Filter屬性為:Country=‘China’,然后改變Filtered屬性為True。則只能看到對應(yīng)的Country字段內(nèi)容為‘China’的記錄。

FilterOptions屬性確定過濾方式,可以包含2個選項,若包含foCaseInsensitive,表示忽略字母大小寫;若包含foNoPartialCompare,表示可以用來進行局部匹配,把星號(“*”)當作一個字符,否則星號(“*”)被當作一個掩碼字符。7.6數(shù)據(jù)過濾2.在程序運行期間進行動態(tài)過濾要在程序運行時改變Filter屬性,這包括兩種情況:

(1)操作符右邊為常量,例如:withADODataSet1dobeginFiltered:=False;Filter:='State='+QuotedStr('CA')+'OR'+'State='+QuotedStr('HI');Filtered:=True;end;

QuotedStr()的作用是將字符串轉(zhuǎn)換為帶引號的字符串。也可以使用雙單引號。比如:

ADOtable1.Filter:='State=''CA''ORState=''HI''';7.6數(shù)據(jù)過濾

(2)操作符右邊不為常量,可能是通過一個變量指定的值,或由一輸入框給出的值。這時需要用到Format函數(shù)。其代碼形式為:procedureTForm1.filterClick(Sender:TObject);varStateValue:string;beginStateValue:='CA';ADOtable1.filtered:=False;ADOtable1.Filter:=Format('State=''%s''',[StateValue]);//可改為:ADOtable1.Filter:='State

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論