數據集部件的事件
數據集部件TTable或TQuery具有很多的事件 為這些事件編寫相應的程序代碼可以進行有效性驗證 計算可計算字段的值 確認對數據庫表的多種操作等等 這些事件及其描述如表 所示
表 數據集部件常用的事件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
事 件 描 述
───────────────────────────────────
BeforeOpen Afteropen 在數據集部件被打開之前/之後被觸發
───────────────────────────────────
BeforeClose Afterclose 在數據集部件被關閉之前/之後被觸發
───────────────────────────────────
BeforeInsert AfterInsert 在數據集部件進入插入狀態之前/之後被觸發
───────────────────────────────────
BeforeEdit AfterEdit 在數據集部件被編輯之前/之後被觸發
───────────────────────────────────
BeforePost AfterPost 在數據集部件投寄被修改的記錄之前/之後被觸發
───────────────────────────────────
BeforeCancel AfterCancel 在數據集部件取消前壹步操作之前/之後被觸發
───────────────────────────────────
BeforeDelete AfterDelete 在數據集部件刪除當前記錄之前/之後被觸發
───────────────────────────────────
OnNewRecord 當建立壹條新記錄時被觸發
───────────────────────────────────
OnCalcFields 當為表中的計算字段計算字段值時被觸發
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TTable部件及應用
在前壹節裏我們介紹了數據集部件TTable 和TQuery 的***同的壹些屬性和方法 TTable部件是Delphi數據庫編程中要經常使用的最重要的部件之壹 它是數據庫應用程序訪問數據庫時必須使用的數據集部件之壹 在這壹節裏 我們重點介紹TTable部件特有的屬性和方法 TTable部件所有的屬性 方法和事件都可以在聯機幫助中查到
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屬性中存放著在建立數據庫表時為數據庫表定義的所有輔助索引名 它是壹個輔助索引名列表 是只讀屬性 IndexFieldNames屬性指定用於數據庫表索引排序的字段名 多個字段名之間用分號隔開 例如對Customer DB表中的客戶記錄按郵政編碼ZipCode和客戶號碼CustNo排序時可以設定IndexFieldNames的值為
ZipCode ; CustNo
在IndexFieldNames屬性中指定的字段必須存在於相應的數據庫表中 否則會導致錯誤 IndexName和IndexFieldName是互斥的 每次只能指定其中壹個屬性的值 不能同時為兩個屬性都指定屬性值
lishixinzhi/Article/program/Delphi/201311/25157