15.3.6 數據集部件的事件
數據集部件TTable或TQuery具有很多的事件。為這些事件編寫相應的程序代碼可以進行有效性驗證、計算可計算字段的值、確認對數據庫表的多種操作等等。這些事件及其描述如表15.4所示。
表15.4 數據集部件常用的事件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
事 件 描 述
───────────────────────────────────
BeforeOpen,Afteropen 在數據集部件被打開之前/之後被觸發
───────────────────────────────────
BeforeClose,Afterclose 在數據集部件被關閉之前/之後被觸發
───────────────────────────────────
BeforeInsert,AfterInsert 在數據集部件進入插入狀態之前/之後被觸發
───────────────────────────────────
BeforeEdit,AfterEdit 在數據集部件被編輯之前/之後被觸發
───────────────────────────────────
BeforePost,AfterPost 在數據集部件投寄被修改的記錄之前/之後被觸發
───────────────────────────────────
BeforeCancel,AfterCancel 在數據集部件取消前一步操作之前/之後被觸發
───────────────────────────────────
BeforeDelete,AfterDelete 在數據集部件刪除當前記錄之前/之後被觸發
───────────────────────────────────
OnNewRecord 當建立一條新記錄時被觸發
───────────────────────────────────
OnCalcFIElds 當為表中的計算字段計算字段值時被觸發
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
15.4 TTable部件及應用
在前一節裡我們介紹了數據集部件TTable 和TQuery 的共同的一些屬性和方法。TTable部件是Delphi數據庫編程中要經常使用的最重要的部件之一,它是數據庫應用程序訪問數據庫時必須使用的數據集部件之一,在這一節裡,我們重點介紹TTable部件特有的屬性和方法,TTable部件所有的屬性、方法和事件都可以在聯機幫助中查到。
15.4.1 TTabel部件主要的屬性
DatabaseName屬性和TableName屬性:
DatabaseName屬性是說明數據庫應用程序所操作的數據庫的名字,它可以是由BDE定義的數據庫的別名、顯式說明的數據庫文件所在的磁盤路徑或者由TDatabase部件定義的一個數據庫名。DatabaseName屬性常常是一個由BDE定義的數據庫的別名。使用由BDE定義的數據庫的別名代替數據庫實際所在的路徑和名字,好處是當實際的數據庫存放的位置發生變化時,只需利用BDE簡單地設置一下該數據庫的別名,而數據庫應用程序無需修改。有關BDE的使用請參看BDE的設置應用。TabelName屬性用以說明當前TTable部件所連接的實際的數據庫表。這兩個屬性一般都在設計階段指定,當然在程序運行過程中也可以設置,但是要修改這兩個屬性時,必須要在TTabel的Active屬性為False時進行,當TTable的Active屬性為True時,這兩個屬性是不能被修改和設置的。
TableType屬性:
該屬性說明與TTable部件相連接的數據庫表的類型。當TableType屬性設置成Default時,該屬性所說明的數據庫表的類型由數據庫文件的擴展名決定。
● 若數據庫文件的擴展名為.DB或沒有擴展名,表的類型是Paradox表
● 若數據庫文件的擴展名為.DBF時,表的類型是DBase表
● 若數據庫文件的擴展名為.TXT時,表的類型是ASCII表
如果TableType屬性不設定為Default,那麼與TTable 部件相連的數據庫表的類型由TableType中的設置的值決定,不用考慮數據庫文件的擴展名。
KeyExclusive屬性:
該屬性的一個作用是說明在數據庫表中查找記錄時,將記錄移到與查找值相匹配的記錄處還是將記錄指針移到與查找值相匹配的記錄後面一條記錄處。該屬性是布爾型變量,當它的值為False時(缺省情況下為False),將記錄指針移到相匹配的記錄處,為True時,將記錄指針移到相匹配記錄的後面一條記錄處。該屬性另一個作用是在表中指定檢索范圍時,用來說明是否包括滿足過濾條件的邊界記錄。當KeyExclusive的值為False時,檢索范圍包括邊界記錄,否則不包括邊界記錄,有關詳細的操作請參看“限定表中記錄的檢索范圍”。
IndexFields屬性和IndexFIEldsCount屬性:
IndexFIElds的屬性值是數據庫表中字段名列表,它包含與TTable部件相連的數據庫表中的全部索引字希。IndexFIEldsCount屬性說明表中索引字段的個數。這兩個屬性值都是只讀的,只有在程序運行過程中可用。
IndexName屬性和IndexFIEldNames屬性:
IndexName屬性中存