执行程序时发生这样的错误提示,不知道该怎么处理?

s_x_d 2003-08-12 09:04:20
数据的连接方式是BDE,在插入新的数据的时候出现下面的画面:
project yedf.exe raised exception class EDBengineerror
with message cannot load an idapi service library
file: idpdx32.dll process stop use step or run to continue

...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch_45 2003-08-12
  • 打赏
  • 举报
回复
我们举一个简单的例子来说明。为了方便我们就使用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环境下运行通过。
hch_45 2003-08-12
  • 打赏
  • 举报
回复
VCL产生的EDBEngineError有一个数组属性Errors,记录了BDE错误代码、数据库原始错误代码和数据库错误提示,其中Errors[0].SubCode保存了BDE错误代码。BDE错误代码声明在“..DOCBDE.INT”文件中,其中重要的有:ERRCODE_KEYVIOL、ERRCODE_REQDERR、ERRCODE_FOREIGNKEYERR、ERRCODE_DETAILRECORDEXIST。理论上根据这个代码就可以分辨错误类型,但不同的数据库返回值的精度并不相同,Oracle对所有错误都有单独的代码,SQL Server和InterBase不能指出外键错误的原因。为进一步区分错误类型,对于SQL Server我们还可以分析错误Message,根据其中的关键词分辨外键错误的原因。
Maple119 2003-08-12
  • 打赏
  • 举报
回复
是不是少了一个文件 Idpdx32.dll 呢???
或者你换掉这个文件试试.

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧