procedure TForeCastForm.adsMasterAfterDelete(DataSet: TDataSet);
begin
try
MainData.MainConn.BeginTrans;
adsMaster.UpdateBatch();
MainData.MainConn .CommitTrans;
Except on E:Exception do
begin
MainData.MainConn.RollbackTrans;
ShowMessage('错误:单据保存失败!原因:'+E.Message);
end;
end;
end;
try...Except ...是怎样执行的呢???是不是两者中的代码只执行一个呢?
我认为这样写RollbackTrans达不到效果,因为BeginTrans放在 try里了,是如此吗?
begin
try
MainData.MainConn.BeginTrans;
adsMaster.UpdateBatch();
MainData.MainConn .CommitTrans;
Except on E:Exception do
begin
MainData.MainConn.RollbackTrans;
ShowMessage('错误:单据保存失败!原因:'+E.Message);
end;
end;
end;
try...Except ...是怎样执行的呢???是不是两者中的代码只执行一个呢?
我认为这样写RollbackTrans达不到效果,因为BeginTrans放在 try里了,是如此吗?
解决方案 »
- 在DBGRID中的焦点设定问题!
- 怎样实现一种颜色到另一种颜色的渐变??
- 求判断输入的身份证号码是否合法的算法
- left join 语句的困惑
- "cannot allocate socket"什么原因
- ★怎样在继承的时候(即inherited的时候),传递一个参数给父类过程?具体内详。
- 请问:一个字符串,如何取得其中每个单词的首字母?
- 有关函数FindFirst()
- 各位近来看看,是关于delphi自带的一个列子pooler的?????????????
- 求<VCL架构剖析>原版
- 怎样改变pagecontrol控件的背景颜色?
- 如何把一个Access文件中的一个表拷贝到另一个Access文件中?
这样说似乎是不对的!因为你要处理的东西应该在try中,except是处理性能生指定异常以后,你想怎么做!
MainData.MainConn.RollbackTrans;的效果一样。
因为我认为发生异常时,try里的代码并没有执行,是这样吗?
MainData.MainConn.RollbackTrans;是很有必要的!可以说这正是你要建立这个异常的根本所在!不然的话,异常 本身就没有意义了!
MainData.MainConn.BeginTrans;
adsMaster.UpdateBatch();
MainData.MainConn .CommitTrans;