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

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的数据集控件给程序开发人员提供了灵活的前端数据完整性检验的机制

prepend(content)-JQuery API prependTo(expr)-JQuery API remove(expr)-JQuery API wrap(elem)-JQuery API wrap(html) -JQuery API add(elements) -JQuery API add(html)-JQuery API add(expr) -JQuery API children(expr) -JQuery API contains(str) -JQuery API end() -JQuery API filter(filter) -JQuery API filter(expression) -JQuery API find(expr) -JQuery API is(expr) -JQuery API next(expr)-JQuery API not(elems)-JQuery API not(expr)-JQuery API not(el)-JQuery API parent(expr)-JQuery API parents(expr)-JQuery API prev(expr)-JQuery API siblings(expr)-JQuery API Events事件-JQuery API bind(type,data,fn)-JQuery API blur(fn) -JQuery API blur() -JQuery API change(fn) -JQuery API click(fn)-JQuery API click()-JQuery API dblclick(fn) -JQuery API 请问U-C矩阵是什么? 庆祝一下 请教程序组加入程序的问题 老是想来灌水,把这点可用分送光得了,省得挂念 IT老虎,与天为敌快进来,谢谢我只有20多分了,你们一人十分吧,我留点好吧? 如何实现打印,尤其是分页打印? paw_001,paw_001 在马? NetGuardian??哪为兄弟有啊,给我一份copy~~~~~~~~~~~~ 关于自增长字段使用的问题,高手请进 这一贴,分就少点了,就这么多啦 有人能告诉我广东省C程序员与JAVA程序员的薪水比较吗?为什么会有这种差距呢 请问用javaApplet如何控制IE界面? 点对点的讨论 水平考试与资格考试及格分别是多少分? 如何再网页中实现打印功能,份也打印。 我发现了一个网站的BUG,我该怎样进去? 到处都是泡泡,俺看的想吐,晚上再来算了。 怪事, 屏幕变黑白 我的问题_6 MYSQL中like的问题 请教打印预览问题 请问,如果我想把,file edit tools window这个主菜单栏动态去掉,怎么做? 如何用程序代码实现在Memo文本编辑框中被选中的文字加下划线。 怎样分析tcp报文(我很急呀) *.idl文件如何使用? 各位大侠,怎么写一个php在线打分的程序阿? 我测试一下 感兴趣的去试试! IE外壳扩展的程序 Delphi 6.0的一个Bug??? 我怎么把字符串放进缓冲里?急急急!!! 恭喜 zhipop 喜得漂亮的可爱的千金 几个小问题想请教大家 如何将浏览器的地址栏里的IE图标换成自己的图标? r俺明天想去给我的宝马生生级,不算显示器,3000元左右,请各位大侠们赐教该什么配置 2000下写的程序,NT 4.0workstation上为什么不能跑? 启用新主页下载数据窗口编辑器 请教Qbasic中的几个问题..... 用BCB如何向Oracle8.0.5中更新BLOB 用ODBC编程时发现错误:nvarchar 类型无数据类型同其绑定,用CString 出错!如何解决? 救命,救命!!!!!!!!!!!! 【 这两天好像来了很多新人嘛!来报个到吧! 】 请教:如将一个 FormView 的 ScrollBar 去掉 在asp中怎么定义可变长的数组? 关于文本框的问题(你能回答吗?) X档案第三季有一集叫《网络情人》,讲的什么内容? 如何登陆interbase de local server? 确定星座是按农历,还是公历????? 请问哪里能买到苹果7300主板,大概多少钱? vc高手快来帮我 我可以通过style定义普通字体的大小,却不能定义表格中字体的大小 娃哈哈都有哪些产品 娃哈哈的各系列产品 乐扣塑料杯是pp吗 家用电器知道多少瓦 怎么算出一小时要多少度电?一个家电例如是两千五百W,一个小时用多少电,是怎样算出来的···· 娃哈哈为什么叫娃哈哈? 乐扣杯子是塑料的对身体有害吗? 1000瓦的电器开1小时一定会用了1°电? 娃哈哈矿泉水瓶,596ml的,有多高?身边没有尺子, 乐扣塑料杯装热水有胶味,泡了很久还是有一点.这杯子能装热水喝吗 1000瓦等于多少度电 矿泉水瓶怎样做娃娃 乐扣水杯是用什么型号的PP材料做成的?聚丙烯(P.P) 是肯定的,问题是那个牌的PP什么型号,为什么材料那么硬还高透明耐高温 1000瓦等于多少瓦 矿泉水瓶手工制作宠物吸水器懒得去买宠物用的吸水器 请问用矿泉水瓶怎么做 就是水倒进去然后瓶盖朝下 只有小狗去舔的时候才会出水 能不能用冰醋酸腐蚀乐扣杯子的PP材质?如题,另外请问,如果杯子中倒入稀释后的冰醋酸,再倒入食用油,可以阻止它挥发吗? 1000瓦每小时耗多少度电? 矿泉水瓶手工制作动物 PP材料的乐扣水杯和PC材料的乐亿多水杯哪个好我要一个可以装开水而且没有气味的 功率1000瓦是一小时用一度电吗?如果不是那是多少? 矿泉水瓶自制沙漏怎么做 乐扣的杯子好么?是塑料的,喝水应该选择乐扣的还是玻璃杯啊?可是现在都说用塑料的好,售货员还说玻璃的过时了 功耗25瓦一小时耗多少度电 幼儿园自制玩具有哪些在分散活动时玩的,如踩尾巴、跳绳等.是要有自制体育玩具的分散活动.不需要玩法,提供的游戏要多点!谢谢O(∩_∩)~ 乐扣乐扣的 杯子 区别马克陶瓷杯、运动杯、茶水杯...哪个保温效果更好点儿?正品的马克杯225ml的多少钱?PS:乐扣乐扣(lock&lock)Eco环保陶瓷杯SLB003G/370ml(我不是纸杯-时尚环保系列)225ml 和 3000瓦每小时耗多少度电? 物理-为什么水放在矿泉水瓶里久了,瓶子会挤压变形? 请问如何洗乐扣的杯子?请问刚买来乐扣的杯子随便洗洗就可以了还是要用洗洁精洗,开水烫之类的.怎样洗完是最干净的?还有上面的一些很讨厌的标签怎么能去除干净啊? 取暖器1000瓦的每小时耗多少电?我这个一档是800,一档是1200.两个档加起来1个小时多少电? 什么样的塑料瓶可以装热水 乐扣乐扣的杯子好用吗? 一个一千瓦的用电器,一小时用多少度电?哈哈 为什么往塑料瓶内倒热水会变形? 乐扣的杯子怎么样 一千瓦的电器连续工作一小时消耗的电能是多少求求你们了 为何塑料瓶中装热水,塑料瓶会收缩不是热胀冷缩吗 乐扣的杯子好吗? 800瓦的电器一小时会耗多少度电? 为什么放热水的塑料瓶会变憋 1000毫升等于多少重量的水 1500瓦的电器一小时能用几度电 向塑料瓶内到热水,为什么瓶子会缩小?不是应该热胀冷缩吗 2000瓦功率的电器应该用多少平方的电线 1000瓦等于多少安 矿泉水瓶含有致癌物质有人说矿泉水瓶是一次性的,再次利用会产生致癌物质,真的有这回事吗? 功率800瓦的电器工作多长时间消耗1度电 电冰箱的额定功率是70瓦,耗电量是0.5kw.h/24h,问每小时用电量多少,每天用电多少W? 手机会释放致癌物质吗 家里能用2000瓦功率的电器吗?我买了个烧烤炉 功率似乎太大了,我用的接线板烧了,后来就没敢再用了.谁知道普通家庭可不可以用2000瓦功率的东西啊?还有是怎么看的,有什么衡量标准的? 功率1000瓦的电器一个小时耗电量是多少 天热 喝矿泉水时想到用矿泉水瓶做船 想请教捆扎瓶子的方法 最好有图纸 谢谢! 乐扣乐扣塑料杯有毒吗 多少瓦的电器用一个小时是一度电? 我买了一瓶矿泉水,喝完之后,把热水倒进矿泉水瓶,为什么瓶子会凹进去的?为什么瓶子不会膨胀?我是这样理解的:加了热水之后(没装满瓶子),拧紧瓶盖.瓶内的压强应该是增大啊?那么,大于 乐扣杯子用久了会不会有毒?以前中学化学老师说过的.有些塑料是有毒的.比如 聚苯乙烯、聚氯乙烯.而 聚乙烯 是 可以用来做食品袋的.但是遇到高温还是会释放毒性的.原谅初中老师就讲过这 2000瓦功率,多久需1度电? 饮料瓶,比如可口可乐还有矿泉水瓶,这些塑料瓶子可再生吗? 乐扣水杯底部三角形内是数字7,盖子内部三角形是5,盖子上显示pp,请问这水杯能装开水吗, 一台功率为500瓦的电器一个小时需要用多少度电? 娃哈哈刚去娃哈哈做客户经理待遇怎样? 假的乐扣杯,底部没有塑料什么标识,这样的杯子有毒吗 电器功率150瓦,一小时消耗几度电?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn