多多帮忙。我想写一回滚(rollback)程序,其功能是:当表拷贝不成功时,能恢复原表程序。(50分)

  • 主题发起人 主题发起人 tjming
  • 开始时间 开始时间
T

tjming

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写一回滚(rollback)程序,
其功能是:当表拷贝不成功时,能恢复原表程序。
我用的数据库是ORACLE7,拷贝我用的是
BATCHMOVE,怎么使用回滚?
请各位大侠多指教。
 
不好意思,应该是原表数据,
不是原表程序,我急晕了。
 
DataBase.StartTransaction;
try
//do sth
DataBase.Commit;//save result
except
//do with error
DataBase.Rollback;
end;
 
你可以使用事务处理
如果你使用TDataBase,或者ADOConnection
方法如下:
DataBase1.StartTransaction//或者 ADOConnection1.BeginTrans 。。
try
插入数据处理
DataBase1.commit;// 或者 ADOConnection1.commit;
except
DataBase1.rollback//ADOConnection.rollback;
end;
 
我使用了DataBase1.StartTransaction出现了一个问题
,因为我把DataBase1放在了一个DataModule1里,
我也使用了use unit,但在另一个FORM的BUTTON click使用了
DataBase1.StartTransaction,当编译时却认为DataBase1
没有声明,怎么解决?
 
把你要做的工作全部放到一个事务中就可以了。
 
調用時加上數據模板名。
datamodule1.DataBase1.StartTransaction.
凡是用到數據模板上的控件均加上模板名。
 
我刚也想到这点了,加了datamodule1.在这上没问题了

try
PubDM.Database1.starttransaction ;
BatchMove1.Execute;
PubDM.database1.commit;
MessageDlg('装入成功',mtConfirmation,[mbOK],0);
except
PubDM.database1.rollback;
MessageDlg('装入失败',mtConfirmation,[mbOK],0);
end;
总是报错,是不是BatchMove1.Execute;不能这样用呀?
 
能說一下報什么錯誤信息。
BatchMove1的執行用execute沒問題,
你看看你BatchMove1連接的source,
destination,mode等屬性設置是否有否。
 
错误为
Project ****ang.exe raised exception class
EDBEngineError with message'A user transaction is
already in progress.
source=C:general.db
destination为oracle7里的general.db
mode为batCOPY应该没问题吧。
 
多人接受答案了。
 
后退
顶部