


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Delphi”程序級(jí)觸發(fā)器”功能的實(shí)現(xiàn) 發(fā)表:不詳 閱讀:75次 關(guān)鍵字: 字體:大 中 小 在Delphi的數(shù)據(jù)集控件中,提供了類似關(guān)系數(shù)據(jù)庫管理系統(tǒng)中觸發(fā)器功能的事件機(jī)制-觸發(fā)器類事件。靈活使用數(shù)據(jù)集控件的此類事件,能夠?qū)崿F(xiàn)程序級(jí)的觸發(fā)器功能,以加強(qiáng)數(shù)據(jù)的完整性檢驗(yàn)。 以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)生時(shí)調(diào)用的事件 OnCalcField 當(dāng)計(jì)算字段被計(jì)算時(shí)調(diào)用的事件 OnFilterRecord 啟動(dòng)過濾后,數(shù)據(jù)集內(nèi)每條記錄都調(diào)用此事件 事件使用舉例: 1 更改Delphi中DbNavigator控件默認(rèn)的刪除對(duì)話框 設(shè)置DbNavigator的ConfirmDelete屬性為False,在Table控件的Befor
3、eDelete事件中編寫如下代碼: if Application.MessageBox(確實(shí)要?jiǎng)h除當(dāng)前記錄嗎?, 刪除 確認(rèn), mb_YesNo + mb_IconWarning Id_Yes then Abort; file:/利用啞異常阻止刪除事件發(fā)生 2在記錄保存前檢驗(yàn)數(shù)據(jù)的完整性,以及連鎖更新相關(guān)表中的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)完整性檢驗(yàn)可通過表數(shù)據(jù)集控件的BeforePost事件檢驗(yàn): file:/GetNowCardMount為自定義函數(shù)(舉例,假設(shè)其取得當(dāng)前憑證的實(shí)際庫存量 if Table1.FieldByName(OutCardMount.AsInteger GetNowCardMoun
4、t then Application.MessageBox(當(dāng)前輸入憑證的下發(fā)數(shù)量超過該種憑證的實(shí)際庫存量!, 錯(cuò)誤, 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ù)集打開之前檢驗(yàn)用戶是否具有對(duì)當(dāng)前表的訪問權(quán) 在表數(shù)據(jù)集的BeforeOpen事件中編寫如下代碼: if Not CanVisit(UserName, TableName then file:/CanVisit假設(shè)函數(shù),檢驗(yàn)用戶對(duì)
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ù)完整性檢驗(yàn)的機(jī)制 (作者 陳立平) 在Delphi的數(shù)據(jù)集控件中,提供了類似關(guān)系數(shù)據(jù)庫管理系統(tǒng)中觸發(fā)器功能的事件機(jī)制-觸發(fā)器類事件。靈活使用數(shù)據(jù)集控件的此類事件,能夠?qū)崿F(xiàn)程序級(jí)的觸發(fā)器功能,以加強(qiáng)數(shù)據(jù)的完整性檢驗(yàn)。 以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)生時(shí)調(diào)用的事件 OnCalcField 當(dāng)計(jì)算字段被計(jì)算時(shí)調(diào)用的事件 OnFilte
8、rRecord 啟動(dòng)過濾后,數(shù)據(jù)集內(nèi)每條記錄都調(diào)用此事件 事件使用舉例: 1 更改Delphi中DbNavigator控件默認(rèn)的刪除對(duì)話框 設(shè)置DbNavigator的ConfirmDelete屬性為False,在Table控件的BeforeDelete事件中編寫如下代碼: if Application.MessageBox(確實(shí)要?jiǎng)h除當(dāng)前記錄嗎?, 刪除 確認(rèn), mb_YesNo + mb_IconWarning Id_Yes then Abort; file:/利用啞異常阻止刪除事件發(fā)生 2在記錄保存前檢驗(yàn)數(shù)據(jù)的完整性,以及連鎖更新相關(guān)表中的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)完整性檢驗(yàn)可通過表數(shù)據(jù)集控件的Be
9、forePost事件檢驗(yàn): file:/GetNowCardMount為自定義函數(shù)(舉例,假設(shè)其取得當(dāng)前憑證的實(shí)際庫存量 if Table1.FieldByName(OutCardMount.AsInteger GetNowCardMount then Application.MessageBox(當(dāng)前輸入憑證的下發(fā)數(shù)量超過該種憑證的實(shí)際庫存量!, 錯(cuò)誤, 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ù)集打開之前檢驗(yàn)用戶是否具有對(duì)當(dāng)前表的訪問權(quán) 在表數(shù)據(jù)集的BeforeOpen事件中編寫如下代碼: if Not CanVisit(UserName, TableName then file:/CanVisit假設(shè)函數(shù),檢驗(yàn)用戶對(duì)表是否有訪問權(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同欠款起訴費(fèi)用3篇
- 農(nóng)產(chǎn)品購買合同的交貨條款3篇
- 工程設(shè)計(jì)施工合同范本的建設(shè)周期
- 土地使用權(quán)及房屋買賣合同3篇
- 買房授權(quán)委托書樣本格式3篇
- 勞動(dòng)合同解除公告3篇
- 學(xué)生社會(huì)實(shí)踐承諾函3篇
- 合伙關(guān)系終止合同3篇
- 2025基于社區(qū)的阿爾茨海默病三級(jí)綜合防治中國專家共識(shí)
- 煤炭加工廠的環(huán)境影響評(píng)價(jià)與環(huán)境保護(hù)措施考核試卷
- 2024-2025人教PEP版(三起)(2024)小學(xué)英語三年級(jí)上冊(cè)(全冊(cè))教學(xué)設(shè)計(jì)及反思(完整版P84)
- 蘇州市施工圖無障礙設(shè)計(jì)專篇參考樣式(試行)2025
- 2025-2030中國鍛造(鍛件)行業(yè)投資策略及規(guī)劃建議研究研究報(bào)告
- 影城員工考核試題及答案
- 新藥臨床試驗(yàn)合作協(xié)議
- 設(shè)備部門級(jí)安全培訓(xùn)
- 網(wǎng)絡(luò)輿情分析與應(yīng)對(duì)策略
- 華為經(jīng)營管理叢書華為的研發(fā)管理
- 2025-2030中國低壓電器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 個(gè)人裝載機(jī)租賃協(xié)議書范本
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認(rèn)證機(jī)構(gòu)要求》中文版(機(jī)翻)
評(píng)論
0/150
提交評(píng)論