try... except在运行期间无法捕获异常(不显示错误信息)

cncharles 2005-09-05 08:37:57
function TDBaseClass.UpdateDelta(CDS: TClientDataSet): Boolean;
{描述:更新cds的Delta到数据库中
说明:在做两层结构时用 CDS.DataSet设为 DataModule的ADOQuery\ADOConnection连接到数据库
}
begin
Result:=False;
try
CDS.ApplyUpdates(0); //改-1也不会提示
Result:=True;
except
on E:Exception do ShowMessage(E.Message);
end;
end;


程序中调用此函数的时候,如果数据有错误,在调试的时候有错误提示,
可以运行的时候却不会有任何提示, 不会把数据更新到数据库,
不知道是什么原因高手指点.
...全文
385 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cncharles 2005-09-08
  • 打赏
  • 举报
回复
接贴了
leonkim 2005-09-06
  • 打赏
  • 举报
回复
同样:给你封装的类中的ClientDataSet的ReconcileError事件定义方法,捕获错误后,Raise出来,再通过你的
try
CDS.ApplyUpdates(0); //改-1也不会提示
Result:=True;
except
on E:Exception do ShowMessage(E.Message);
end;

应该就可以了。
cncharles 2005-09-06
  • 打赏
  • 举报
回复
up
cncharles 2005-09-06
  • 打赏
  • 举报
回复
谢谢楼上帮我兄弟们, 这个问题我已经搞定,
顶者有分.
merkey2002 2005-09-06
  • 打赏
  • 举报
回复
这个问题比较怪
chenzunshi4 2005-09-06
  • 打赏
  • 举报
回复
http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
cncharles 2005-09-06
  • 打赏
  • 举报
回复
谢谢 ilikeff8(迷茫)
在窗体上的ClientDataSet的ReconcileError事件中可以
在运行期间捕获错误, 但是我想在我自己封装的类中处理怎么做?
分不够再加!
surdon 2005-09-06
  • 打赏
  • 举报
回复
begin
Result:=False;

if CDS.ApplyUpdates(0) = 0 then //改-1也不会提示
Result:=True;
end;
cncharles 2005-09-06
  • 打赏
  • 举报
回复
兄弟们继续帮我, 以前是可以的现在不知道怎么就不行了!
cncharles 2005-09-06
  • 打赏
  • 举报
回复
csdn, 太令我失忘了, 别人发的贴子我都千方百计的去解决
等我发贴的时候顶的人都没有, 唉这世道!
cncharles 2005-09-06
  • 打赏
  • 举报
回复
有些与之无关的代码我就没有写出来, hqhhh (枫叶) 风哥能不能帮我?
cncharles 2005-09-06
  • 打赏
  • 举报
回复
//我是这样的封装的为什么还是不行, CSDN的Delphi高手都去哪儿了???
type
TDBaseClass=class(TObject) //数据库基类
private
UpdateCds:TClientDataSet;
FOnReconcileError: TReconcileErrorEvent;
procedure UpdateCdsReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
protected
property OnReconcileError: TReconcileErrorEvent read FOnReconcileError write FOnReconcileError;
public
function UpdateDelta(CDS:TClientDataSet):Boolean;

implementation
procedure TDBaseClass.UpdateCdsReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
ShowMessage(E.Message);
end;

function TDBaseClass.UpdateDelta(CDS: TClientDataSet): Boolean;
{描述:更新cds的Delta到数据库中
说明:在做两层结构时用 CDS.DataSet设为 DataModule的ADOQuery\ADOConnection连接到数据库
}
begin
Result:=False;
try
UpdateCds:=CDS;
UpdateCds.ApplyUpdates(0);
Result:=True;
except
on E:Exception do ShowMessage(E.Message);
end;
end;
ilikeff8 2005-09-05
  • 打赏
  • 举报
回复
CDSReconcileError event
cncharles 2005-09-05
  • 打赏
  • 举报
回复
不会吧, 那样都无法编译.
hangguojun 2005-09-05
  • 打赏
  • 举报
回复
on E:Exception do ShowMessage(E.Message);

改成这样试试

ShowMessage(E.Message);

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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