在一個事件中需要處理插入多個數據表,怎樣實現數據要不一次性全操作完畢,要不全不操作。
解决方案 »
- delphi -用button对SQL执行循环
- 这样控制其他程序在任务拦中显示
- 用quickrep实现打印预览时,怎样把那个打印功能去掉,实现只预览不打印,有解送100分
- 想学一下DELPHI下的CORBA方式编程,但不知道从何学起,大家有没有简单的例子让我入门
- 新增一行,到最后一列,回车,再新增一行!遇到的问题,请大家指点迷津!谢谢!!!!
- 如何获取一个可执行文件的版本号?
- fastreport不支持jpeg,急,再现给分。
- 怎样使用UPDATE 对一个表进行批量更新
- 一个关于不同的数据类型符值的问题!!!
- 菜鸟的弹出菜单
- 一个简单问题!关于ADOTABLE的
- 关于短信,小弟现在手里有一些C方面的短信资料,哪位大哥手上有关于SMS的Delphi资料。或者把我的C转变为Delphi也可以
with ADOQuery1 do
beign
connection.Begintrans;
數據操作
end;
with ADOQueyr2 do
beign
Connection.Begintrans;
數據操作
end;
with ADOQuery3 do
beign
數據操作
end;
try
begin
ADOQuery1.Connection.committrans;//這個提交成功
ADOQuery2.Connection.Committrans;//提交成功
ADOQuery3.Connection.committrans;//提交失敗
end;
except
begin
ADOQuery1.Connection.Rollback;//不回滾
ADOQuery2.Connection.Rollback;//不回滾
ADOQuery3.Connection.RollBack;//回滾end;這樣一來,數據就寫了一半?
數據操作
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans
end;
应该针对ADOConnection如果你的ADOQuery连接的是同一个ADOConnection的话,就直接
像楼上的那样就行了如果是多个ADOConnection的话就判断其ADOConnection.InTransaction属性是否为真,为真就是当前已经进行事务(未提交)
beign
connection.Begintrans;
數據操作
end;
with ADOQueyr2 do
beign
Connection.Begintrans;
數據操作
end;
with ADOQuery3 do
beign
數據操作
end;数据操作应该放在try...except中间,要不然事务是没用的