


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Delphi”程序級觸發(fā)器”功能的實現(xiàn) 發(fā)表:不詳 閱讀:75次 關(guān)鍵字: 字體:大 中 小 在Delphi的數(shù)據(jù)集控件中,提供了類似關(guān)系數(shù)據(jù)庫管理系統(tǒng)中觸發(fā)器功能的事件機制-觸發(fā)器類事件。靈活使用數(shù)據(jù)集控件的此類事件,能夠?qū)崿F(xiàn)程序級的觸發(fā)器功能,以加強數(shù)據(jù)的完整性檢驗。 以Delphi中表數(shù)據(jù)集為例,其相應(yīng)的觸發(fā)器類事件: 事件名稱 說明 BeforeInsert, AfterInsert 插入記錄前后調(diào)用的事件 BeforeEdit, AfterEdit 編輯前后調(diào)用的事件 BeforePost, AfterPost 保存數(shù)據(jù)前后調(diào)用的事件 BeforeDelete, AfterDelet
2、e 刪除前后調(diào)用的事件 BeforeCancel, AfterCancel 取消編輯前后調(diào)用的事件 BeforeOpen, AfterOpen 打開數(shù)據(jù)集前后調(diào)用的事件 BeforeClose, AfterClose 關(guān)閉數(shù)據(jù)集前后調(diào)用的事件 OnNewRecord 新記錄產(chǎn)生時調(diào)用的事件 OnCalcField 當(dāng)計算字段被計算時調(diào)用的事件 OnFilterRecord 啟動過濾后,數(shù)據(jù)集內(nèi)每條記錄都調(diào)用此事件 事件使用舉例: 1 更改Delphi中DbNavigator控件默認(rèn)的刪除對話框 設(shè)置DbNavigator的ConfirmDelete屬性為False,在Table控件的Befor
3、eDelete事件中編寫如下代碼: if Application.MessageBox(確實要刪除當(dāng)前記錄嗎?, 刪除 確認(rèn), mb_YesNo + mb_IconWarning Id_Yes then Abort; file:/利用啞異常阻止刪除事件發(fā)生 2在記錄保存前檢驗數(shù)據(jù)的完整性,以及連鎖更新相關(guān)表中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)完整性檢驗可通過表數(shù)據(jù)集控件的BeforePost事件檢驗: file:/GetNowCardMount為自定義函數(shù)(舉例,假設(shè)其取得當(dāng)前憑證的實際庫存量 if Table1.FieldByName(OutCardMount.AsInteger GetNowCardMoun
4、t then Application.MessageBox(當(dāng)前輸入憑證的下發(fā)數(shù)量超過該種憑證的實際庫存量!, 錯誤, Mb_Ok + Mb_IconError; Abort; file:/利用啞異常阻止數(shù)據(jù)保存,從而,使光標(biāo)仍停留在當(dāng)前行繼續(xù)編輯 else file:/如果需要連鎖更新的話 UpdateProc; file:/假設(shè)的一連鎖更新相關(guān)表數(shù)據(jù)的過程 3表數(shù)據(jù)集打開之前檢驗用戶是否具有對當(dāng)前表的訪問權(quán) 在表數(shù)據(jù)集的BeforeOpen事件中編寫如下代碼: if Not CanVisit(UserName, TableName then file:/CanVisit假設(shè)函數(shù),檢驗用戶對
5、表是否有訪問權(quán) begin Application.MessageBox(當(dāng)前用戶無足夠權(quán)限訪問當(dāng)前數(shù)據(jù)!, 信息, Mb_Ok + Mb_IconInformation; Abort; file:/阻止 當(dāng)前表被打開 end; 4關(guān)閉表數(shù)據(jù)集前提示保存數(shù)據(jù),防止數(shù)據(jù)丟失 在表數(shù)據(jù)集的BeforeClose事件中編寫如下代碼: if Table1.State in dsEdit, dsInsert then file:/當(dāng)前數(shù)據(jù)被修改或是新插入的記錄 case Application.MessageBox(當(dāng)前數(shù)據(jù)尚未保存,是否保存后再關(guān)閉?, 保存 確認(rèn), Mb_YesNoCancel +
6、Mb_IconQuestion of Id_Yes : AdoTable1.Post; file:/保存數(shù)據(jù) Id_No : ; file:/不保存 Id_Cancel: Abort; file:/取消關(guān)閉事件 end; 其它事件編程略。 Delphi的數(shù)據(jù)集控件給程序開發(fā)人員提供了靈活的前端數(shù)據(jù)完整性檢驗的機制 (作者 陳立平) 在Delphi的數(shù)據(jù)集控件中,提供了類似關(guān)系數(shù)據(jù)庫管理系統(tǒng)中觸發(fā)器功能的事件機制-觸發(fā)器類事件。靈活使用數(shù)據(jù)集控件的此類事件,能夠?qū)崿F(xiàn)程序級的觸發(fā)器功能,以加強數(shù)據(jù)的完整性檢驗。 以Delphi中表數(shù)據(jù)集為例,其相應(yīng)的觸發(fā)器類事件: 事件名稱 說明 BeforeIn
7、sert, AfterInsert 插入記錄前后調(diào)用的事件 BeforeEdit, AfterEdit 編輯前后調(diào)用的事件 BeforePost, AfterPost 保存數(shù)據(jù)前后調(diào)用的事件 BeforeDelete, AfterDelete 刪除前后調(diào)用的事件 BeforeCancel, AfterCancel 取消編輯前后調(diào)用的事件 BeforeOpen, AfterOpen 打開數(shù)據(jù)集前后調(diào)用的事件 BeforeClose, AfterClose 關(guān)閉數(shù)據(jù)集前后調(diào)用的事件 OnNewRecord 新記錄產(chǎn)生時調(diào)用的事件 OnCalcField 當(dāng)計算字段被計算時調(diào)用的事件 OnFilte
8、rRecord 啟動過濾后,數(shù)據(jù)集內(nèi)每條記錄都調(diào)用此事件 事件使用舉例: 1 更改Delphi中DbNavigator控件默認(rèn)的刪除對話框 設(shè)置DbNavigator的ConfirmDelete屬性為False,在Table控件的BeforeDelete事件中編寫如下代碼: if Application.MessageBox(確實要刪除當(dāng)前記錄嗎?, 刪除 確認(rèn), mb_YesNo + mb_IconWarning Id_Yes then Abort; file:/利用啞異常阻止刪除事件發(fā)生 2在記錄保存前檢驗數(shù)據(jù)的完整性,以及連鎖更新相關(guān)表中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)完整性檢驗可通過表數(shù)據(jù)集控件的Be
9、forePost事件檢驗: file:/GetNowCardMount為自定義函數(shù)(舉例,假設(shè)其取得當(dāng)前憑證的實際庫存量 if Table1.FieldByName(OutCardMount.AsInteger GetNowCardMount then Application.MessageBox(當(dāng)前輸入憑證的下發(fā)數(shù)量超過該種憑證的實際庫存量!, 錯誤, Mb_Ok + Mb_IconEr ror; Abort; file:/利用啞異常阻止數(shù)據(jù)保存,從而,使光標(biāo)仍停留在當(dāng)前行繼續(xù)編輯 else file:/如果需要連鎖更新的話 UpdateProc; file:/假設(shè)的一連鎖更新相關(guān)表數(shù)據(jù)的
10、過程 3表數(shù)據(jù)集打開之前檢驗用戶是否具有對當(dāng)前表的訪問權(quán) 在表數(shù)據(jù)集的BeforeOpen事件中編寫如下代碼: if Not CanVisit(UserName, TableName then file:/CanVisit假設(shè)函數(shù),檢驗用戶對表是否有訪問權(quán) begin Application.MessageBox(當(dāng)前用戶無足夠權(quán)限訪問當(dāng)前數(shù)據(jù)!, 信息, Mb_Ok + Mb_IconInformation; Abort; file:/阻止當(dāng)前表被打開 end; 4關(guān)閉表數(shù)據(jù)集前提示保存數(shù)據(jù),防止數(shù)據(jù)丟失 在表數(shù)據(jù)集的BeforeClose事件中編寫如下代碼: if Table1.State in dsEdit, dsInsert then file:/當(dāng)前數(shù)據(jù)被修改或是新插入的記錄 case Application.MessageBox(當(dāng)前數(shù)據(jù)尚未保存,是否保存后再關(guān)閉?, 保存 確認(rèn), Mb_YesNoCan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 63380-3:2025 EN Standard interface for connecting charging stations to local energy management systems - Part 3 Communication protocol and cybersecurity specific aspects
- 虹橋中學(xué)一模數(shù)學(xué)試卷
- 半期后班會課件
- 國外的小學(xué)數(shù)學(xué)試卷
- 上海寶山同洲模范學(xué)校2025年物理高二下期末質(zhì)量跟蹤監(jiān)視試題含解析
- 中國觸控顯示屏行業(yè)運行態(tài)勢及市場發(fā)展?jié)摿︻A(yù)測報告
- 2025-2030年中國冶鑄項目投資可行性研究分析報告
- 中國襄樊房地產(chǎn)行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略研究報告
- 健康生活從小養(yǎng)成課件
- 藁城區(qū)基本倉儲管理辦法
- 2025年法院聘用書記員考試試題(附答案)
- 2025年濟南綜??毓杉瘓F有限公司公開招聘(22名)筆試備考試題含答案詳解
- 溺水安全知識課件
- 教育政策學(xué)全套課件
- 2025至2030年中國高速公路廣告行業(yè)市場行情監(jiān)測及投資前景展望報告
- 2025-2030中國氫能產(chǎn)業(yè)發(fā)展現(xiàn)狀及商業(yè)化應(yīng)用前景報告
- 識別心內(nèi)科護理高風(fēng)險
- 2025年 嘉峪關(guān)市招聘編制外聘用制教師筆試試卷附答案
- 貨代公司風(fēng)險管理制度
- 食品公司衛(wèi)生間管理制度
- 2025年安徽淮南新東辰控股集團有限責(zé)任公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論