计算机世界日报
返回首页 产品报价 实用技巧 国产软件 技术天地 站点精选

计算机世界展览会日报

  综合要闻
  企业&人.com
  产品与技术
  网络与通信
  市场与渠道
  99全文检索

CCW网站

  网络世界
  微电脑世界
  IT经理世界
  CCW展览
  信息服务中心   家用电脑世界

兄弟刊物

  电子与信息化
  今日电子
  中国新闻科技
  电子知识产权
  电子产品世界

网上专递

  Linux园地
  友情链接
  冬涛谈法
Dongtao on Law

98内容总汇



实用技巧

控制数据库关键字的重复输入

赖立谦
[请作者和我们联系]

---- 在Delphi中向数据库添加重复的关键字是异常处理的一部分。具体的解决方法是使你的程序能够对异常响应。

---- 我们举一个简单的例子来说明。为了方便我们就使用Delphi自带的数据库DBDEMOS,它是Paradox型的数据库,其中表employee.db具有关键字EmpNo。

---- Table1的DataBaseName是DBDEMOS ,TableName是employee.db,Active设为True。DataSource1的DataSet是Table1。DBNavigator1和DBGrid1的DataSource是DataSource1。

---- 下面我们就要写Table的OnPostError事件:当出现重复的关键字时,首先要提示用户,然后取消此次操作。这个事件是在修改或向数据库插入记录时产生异常时才响应的。具体代码如下:

procedure TForm1.Table1PostError
(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
  begin
    if (E is EDBEngineError) then
if (E as EDBEngineError).Errors
[0].Errorcode = eKeyViol then
    begin
      MessageDlg('出现重复记录!',
 mtWarning, [mbOK], 0);
      Table1.Cancel;
      Abort;
    end;
end;
---- 说明:

---- 1. 通过EDBEngineError异常可以获得描述数据库驱动错误的详细信息。当EDBEngineError异常产生时,就会生成一个EDBEngineError对象,这个EDBEngineError对象包含有异常的错误信息,可以用程序进行分析,从而决定要完成的操作。

---- 2. 上面程序的Errorcode是BDE的错误代码,是一个word类型的变量,我们还需要定义它,定义如下:

  const
  eKeyViol = 9729;
---- 3. 此程序运行时,Delphi的错误信息提示会在你的异常响应之前。所以在Delphi的IDE环境中运行这个程序时,你将先看到Delphi的错误信息提示,程序中断执行,这并不是说明你的程序有错误,此时再按F9,继续执行,才会看到你的异常响应,也就是你自己的错误信息提示。不过如果你直接执行exe文件就不会有这些问题了。 此程序在Delphi4.0、Windows95环境下运行通过。
 
免 费 订 阅

实用技巧分类

Office应用
CAD
C、C++
数据库应用
Delphi
Internet应用
Java
Notes应用
操作系统应用
PowerBuilder
VB
Visual Foxpro
其他类
上周 排行榜
如 何 投 稿 ?

编者的话

在日常的工作生活中, 我们对计算机软硬件技术的应用开发肯定有许多的心得体会, 拿来和众人分享:让别人得到他们想要的,使自己找到苦苦寻觅的; 小的点点滴滴,大的工程系统,这里都需要。投稿 的关键在“技巧”二 字,知他人所不知,这样的稿件本栏最最欢迎! 大家公认的 好文章自然会有好的奖励。希望每个人 在这里都有所收获...

r2.gif (980 bytes)
  中国惠普
  3Com中国
  Motorola中国
  CA中国
  Cabletron
  Sony在中国
  西门子WinCC
  爱普生中国
  中国建设银行
  德州仪器(TI)
  问博医药


中国计算机世界出版服务公司版权所有