说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi”程序级触发器”功能的实现

HTML文档下载 WORD文档下载 PDF文档下载
Delphi”程序级触发器”功能的实现

在Delphi的数据集控件中,提供了类似关系数据库管理系统中触发器功能的事件机制----"触发器类"事件。灵活使用数据集控件的此类事件,能够实现"程序级的触发器"功能,以加强数据的完整性检验。

以Delphi中表数据集为例,其相应的"触发器类"事件:

事件名称 说明

BeforeInsert

AfterInsert 插入记录前后调用的事件

BeforeEdit

AfterEdit 编辑前后调用的事件

BeforePost

AfterPost 保存数据前后调用的事件

BeforeDelete

AfterDelete 删除前后调用的事件

BeforeCancel

AfterCancel 取消编辑前后调用的事件

BeforeOpen

AfterOpen 打开数据集前后调用的事件

BeforeClose

AfterClose 关闭数据集前后调用的事件

OnNewRecord 新记录产生时调用的事件

OnCalcField 当计算字段被计算时调用的事件

OnFilterRecord 启动过滤后,数据集内每条记录都调用此事件

事件使用举例:

1. 更改Delphi中DbNavigator控件默认的删除对话框

设置DbNavigator的ConfirmDelete属性为False,在Table控件的BeforeDelete事件中编写如下代码:

if Application.MessageBox('确实要删除当前记录吗?'

'删除 确认'

mb_YesNo + mb_IconWarning)                <> Id_Yes then

Abort; file://利用哑异常阻止删除事件发生

2.在记录保存前检验数据的完整性,以及连锁更新相关表中的数据,实现数据完整性检验可通过表数据集控件的BeforePost事件检验:

file://GetNowCardMount为自定义函数(举例),假设其取得当前凭证的实际库存量

if Table1.FieldByName('OutCardMount').AsInteger > GetNowCardMount then

Application.MessageBox('当前输入凭证的下发数量超过该种凭证的实际库存量!'

'错误'

Mb_Ok                + Mb_IconError);

Abort; file://利用哑异常阻止数据保存,从而,使光标仍停留在当前行继续编辑

else file://如果需要连锁更新的话

UpdateProc; file://假设的一连锁更新相关表数据的过程

3.表数据集打开之前检验用户是否具有对当前表的访问权

在表数据集的BeforeOpen事件中编写如下代码:

if Not CanVisit(UserName

TableName) then file://CanVisit假设函数

检验用户对表是否有访问权

begin

Application.MessageBox('当前用户无足够权限访问当前数据!'

'信息'

Mb_Ok +                       Mb_IconInformation);

Abort; file://阻止当前表被打开

end;

4.关闭表数据集前提示保存数据,防止数据丢失

在表数据集的BeforeClose事件中编写如下代码:

if Table1.State in [dsEdit

dsInsert] then file://当前数据被修改或是新插入的记录

case Application.MessageBox('当前数据尚未保存

是否保存后再关闭?'

'保存 确认'

Mb_YesNoCancel + Mb_IconQuestion) of

Id_Yes : AdoTable1.Post; file://保存数据

Id_No : ; file://不保存

Id_Cancel: Abort; file://取消关闭事件

end;

其它事件编程略。

Delphi的数据集控件给程序开发人员提供了灵活的前端数据完整性检验的机制

兰旭:拒绝同质化,做自己的真材实料! Cloud Foundry直面PaaS对手 初具商用能力 IndieBros访谈:探寻《2+18+200万》背后的故事 移动周报:生存还是毁灭 HTML5未来路在何方? 开发者的新机遇:微软生态系统打开开源大门 阻碍创新:谷歌、Facebook请求驳回抽象专利概念 Apple专利战分析:战火不停 创新不止 史上最牛独立开发者:花20美元狂赚100万美元 Twitter VS. Instagram:照片分享大战爆发 第二届“龙芯杯”中国开源软件设计大赛圆满落幕 TUP Masters第六期实录:Jeffrey Richter讲解Win8应用开发与.NET4.5 [简讯]Bootstrap 2.2.2发布 官博宣布新特性 我们正处于API的黄金时代吗? 敏捷开发的26条至理名言 12月10日:1815年首位程序员Augusta Ada出生 TOP30+应用排行榜:十一月国内外综合榜单 抱大腿:Square礼品卡服务进驻Passbook 科技创新剑指开源产业 “龙芯杯”破题自主研发 25GPU的Linux集群6小时内破解标准Windows密码 Lady Gaga与大数据的“火花” 手势才是王道:3款应用捕获3个设计灵感 YouTube的挑战者 JustinTV教你如何打造实时视频网站 黑客挟持160万用户密码 抗议联合国监管互联网 Twitter面对危机火速上线照片滤镜产品 Nike推创业孵化器:每个参与团队获2万美金 傲游发布云浏览器 支持跨终端数据同步 12个git实战建议和技巧 用友UAP产品线总设计师史周军访谈录 IE10新功能解析 支持Media Query(图) 单页Web应用或引领下一代Web新趋势? [CTO俱乐部第89期]新时代的前端开发 VBA下怎样实现...... 很简单的问题,如果得到OS是什么啊? VB怎样调用Oracle没有包的存贮过程? 哪位能提供AIX下的cc,xlC,make的中文使用说明?我的英语太差,看系统的帮助头都大了! 那位有用网叶通过servlet提交数据的例子,越简单越好 救命啊! ----关于漂浮的工具条的隐藏(按钮失踪了!)。 主题:为何我的机子只能进入DOS平台,无法再进入Windows界面? 请问什么地方有《UNIX环境高级编程》的随书源代码下载,谢谢!! 如果得到OS的类型啊?用什么API函数啊? 请问哪有Linux的源代码下载??? 作者如何获得他自己编写的程序的版权及著作权? SOS!!请高手速指点, 立刻要用到,谢谢!! 报表字段过长如何分行打印? 急。。。关于字体属性 Jbuilder5.0 注册码,那个想要,我这儿有!今天刚搞到! 高手再哪里,网络程序!!!请赐教,高分!!! 如何在vc中静态调用dl中的函数? 循环里的变量为什么读不出? ADO的问题,请指教 用Delphi6导入VB做的ActiveX控件,为何不能生成VCL类?怎末办? 我给你出个谜语,你帮我解答个问题? 关于SQL SERVER的图片问题 读取二进制注册表的问题! 请问编写AWT的面向对象JAVA程序用哪个开发软件比较好? 关于手机铃声图片的下载 为何去不到记录值? 软件包 给点建议,做什么都打不起精神.学习也学习不进去,我看我要完蛋了都22了什么都不会 菜鸟问题:编译报错(WINDOWS.H already included),急! 数据绑定问题 关于组件ProgID的疑惑: RealPlayer的最新版本是什么? 哪里可以下载? 请教调试问题? 急!我的weblogic的控制台怎么不让进行create操作? 好郁悶啊﹐大家幫幫我﹗ jsp中的select VC中如何打包 在文本中输入,在下拉框中动态显示,大家多帮忙! 寻找算法!! 参与有分了!! 各位大哥,有关软件测试的好书或好的网站能给小妹介绍一下么? 谢谢各位先!! 学习打不起精神.也不刻苦.天天玩,我看我要完蛋了. 软件发布,KindDiary日记软件 PowerBuilder 中Datawindow和Report的本质区别是什么,什么时候该用Report? MEMO字段在SQLSERVER里应为什么类型? 在vc++中client和server端的socket连接断掉了,server端如何能够立刻就知道,而不需server端send的时侯才发觉。 学习c++,到底要看那些方面的书?我现在在看vc++技术内幕,essential c++,effective c++,大家说还应该看什么书? 在VC下使用ODBC绑定时间数据时的问题的解决! 如何动态更改主窗口的菜单? asp编程主题显示,若是汉字则为前15个字,若是字符则前25个,怎么编码?谢谢! 用VBA如何去读服务器上的DOC文档? 一个小而急手的问题 请翻译成中文 为什么英语步行是on foot而不是by foot? It is _(quick) by bus ,but it is_ (quick) by subway than by bus. 把一根48cm长的铁丝焊接成一个正方体框架接头处不计这个正方体表面积是几,体积是几帮我 I go to school on foot. 对(on foot)做出提问 工程队修一条长五分之三千米的路,已修了十分之三,剩下的要3天修完,平均每天要修这条路的几分之几? feet的中文翻译是什么? 步行能用“By foot”表示吗?可以用是为什么?不可以用的原因又是什么? The bus is going to(),now the bus is() 工程队5天可以铺完一条2千米长的水管,3天可以铺这条水管的几分之几,每天铺的长度是1千米的几分之几 用一根长36厘米的铁丝焊成一个正方形框架(接头处不计),表面积是( ),体积是( )还有一道题是:一根长2咪的长方体钢材,沿横截面截成两段后,表面积增加了0.8平方米,这段长方体钢材的 foot excel A1=0、3、6、9时,B1显示0,若A1=1,4,7时,B1显示1,若A1=2、5、8时,B1显示2,公式怎么写? 用一根长48厘米的铁丝焊成一个正方体框架(接头处不计),表面积是()平方厘米体积是()立方厘米 英语的长度单位“foot”是什么意思?是尺码还是什么?给我详细介绍一下!谢谢!注意:不是脚的意思! 有12dm.18dm和24dm长的铁丝各一根,现在要把他们截成一样长的若干段,而且不能浪费问最长可以截成多少DM的。可以截成几段 用一根长12分米的铁丝焊成一个正方体框架,这个正方体体积是,表面积是 6个棱长为1dm的正方体,其表面积最小是几?若每平方分米重7.8千克那么长方体重几? 有12dm、8dm和24dm长的铁丝各一根,现在要把他们截成一样长的若干段,且不能浪费.截下的每段铁丝最长是多少?一共可以截成多少段? 用一根长48厘米的铁丝焊接成一个正方体框架(接头处不计),其表面积是( )cm2,体积是( )cm3 谢谢 工程队修一条长1200米,25天修了这条路的四分之三,还有多少米没修 12dm铁丝8根,18dm铁丝7根,截成一样长能截几根,铁丝长几米?随便,列个算式就给分. 某工程队做一项工程需要15天,平均每天完成这项工程的几分之几?9天完成这项工程 一个数的12倍比它的7倍多13.5,这个数是多少,列方程计算 12dm铁丝8根,18dm铁丝7根,截成一样长能截几根, 一个数的5分之1是30,这个数的12分之1是多少?列式计算 工程队修一条1200米的路,已修了400米,再修多少米就修好了这条路的4分之3? foot与feet的用法区别(脚)什么时候用foot或feet?比如on foot,望详解用法(语法)望详解foot与feet的语法用法 工程队6天铺了一条路的七分之三,平均每天铺了这条路的几分之几?铺完这条路共需几天? 一个工程队修一条1200米长的公路,3天修全长的16分之3,照这样的速度,修完这条路还要多少天?要求过程. 一根铁丝长160dm,现将这根铁丝焊接成一个长方体模型,高是18dm,长和宽相等.这个长方体的体积是多少立方分米?和多少立方米? I often go ?.?处是填by foot,by walk,on feet还是on foot? by now 的用法The experts were now fully convinced that the animal was a puma .这句话中NOW ,事情发生在过去,.After acrossing the Equator ,the caption called in at a portto have a now rudder fitted.but by now the Thermopylae was over fiveh 水果店进桔子120千克,比苹果的40%少30千克,苹果有( )千克 walk on feet 还是 walk on foot by now FOOT(英语)是什么意思?是英尺,还是英丈? 有Walk on foot这种说法么.. by for now 怎样用英语形容 foot用英语来形容 on foot和walk这样用对吗?i'am go to school on foot.i'am walk to school. by now 的中文意思是什么? 帮个忙吧!能写句例句更好啦! 各种水果数量 苹果30个 梨26个 橘子22个 用5个苹果、4个梨子、3橘子组成一个水盘.这些水果,最多可以组装成多少个这样的水果盘? walk和on foot有什么区别 by now的意思?有by now时,句子用什么时态? excel表格中,假设有A,B,C列,A列数据为1,2,3,4,5,6,7;B列数据为1,3,6;C列为100,200,300excel表格中,假设有A,B,C列,A列数据为1,2,3,4,5,6,7;B列为100,200,300,400,500,600,700(A列数据和B列个数相同,相互对应),C列 5分之1-【】等于30分之1 100分求EXCEL如何套用公式算数比如123问想套用-1的公式得到012之后再用*2的公式得到024请尽量说明每一个步骤 excel数据筛选公式 数据表:代码 销售 1 100 2 200 3 300 4 400 5 500 6 600 查找表:代码 结果 数据表:代码 销售1 1002 2003 3004 4005 5006 600查找表:代码 结果如何在查找表代码栏中输入代码后,结果栏会 一个数与5分之1的和相当于36的30%这个数是多少?、 急求高人设置个EXCEL比对数据的公式,比对成功追加100分做数据的EXCEL比对实在太耗时间而且工作量也大,求高人设置个比对公式,比如数据的 A B C 陈永英 7.6 陈永英 陈佑田 18 陈佑田 陈真宝 120.8 英语翻译求翻译headelbowknee feetfoot的中文 5等于三十分之几,为什么? 在EXCEL里有一列数字,有没有公式可以算出一共有几个数字只要算数字的个数就行了,有吗,这种公式 feet(中文翻译) 有8个棱长为1dm的小正方体,将它们摆成一个长方体,有几种摆法?哪种摆法的表面积最大? ___ (travel)by bus takes longer,but it is cheaper than ____(go)by plane.第一个为什么填Traveling,而不是to travel?第二个为什么要填going啊?than 第二个空填什么只取决于第一个空?和than没有关系吗? foot traffic 英语翻译成汉语 要用4个棱长1dm的正方体木块,拼成一个表面积最大的长方体,它的表面积是()如果拼成一个表面积最小的长方体,它的表面积是() The cheap way to travel is by taxi The cheaper way to travel is by bus合并成一句话
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn