ADOM1 主表 MA--MA01,MA02,MA03
ADOD2 从表 MB--MB01,MB02,MB03,MB04,---
已建立主从关系MasterFields=MA01 Indesfieldnames=MB01我用事务处理出现新的一些问题
ADODataSet2.LockType:=itbatchoptimisic;try
ADOM1.Post;
ADOM1.Edit;
except
messagebox(self.Handle,'主表输入不完整','提示',mb_iconinformation+mb_ok);
ADOM1.Edit;
abort;
end;try
ADOD2.Post;
ADOD2.Edit;
except
messagebox(self.Handle,'从表输入不完整','提示',mb_iconinformation+mb_ok);
ADOD2.Edit;
abort;
end;
ADO.BeginTrans;
try
// ADOM1.Post;
ADOM1.UpdateBatch(arALL);
// ADOD2.Post;
ADOD2.UpdateBatch(arALL);
ADO.CommitTrans;
except
ADO.RollbackTrans;
messagebox(self.Handle,'S不能保存','提示',mb_iconinformation+mb_ok);
abort;
end;问题是:如果从表输入不合数据库原则,比如输入了两条相同的记录,保存时有提示错误'S不能保存',但改修过来后再保存提示‘主表输入不完整',再点保存,主表没有存入据库,从表只保存了那条修改记录,
ADOM1.CancelBatch(arALL);
ADOD2.CancelBatch(arALL);
也没有用
ADOD2 从表 MB--MB01,MB02,MB03,MB04,---
已建立主从关系MasterFields=MA01 Indesfieldnames=MB01我用事务处理出现新的一些问题
ADODataSet2.LockType:=itbatchoptimisic;try
ADOM1.Post;
ADOM1.Edit;
except
messagebox(self.Handle,'主表输入不完整','提示',mb_iconinformation+mb_ok);
ADOM1.Edit;
abort;
end;try
ADOD2.Post;
ADOD2.Edit;
except
messagebox(self.Handle,'从表输入不完整','提示',mb_iconinformation+mb_ok);
ADOD2.Edit;
abort;
end;
ADO.BeginTrans;
try
// ADOM1.Post;
ADOM1.UpdateBatch(arALL);
// ADOD2.Post;
ADOD2.UpdateBatch(arALL);
ADO.CommitTrans;
except
ADO.RollbackTrans;
messagebox(self.Handle,'S不能保存','提示',mb_iconinformation+mb_ok);
abort;
end;问题是:如果从表输入不合数据库原则,比如输入了两条相同的记录,保存时有提示错误'S不能保存',但改修过来后再保存提示‘主表输入不完整',再点保存,主表没有存入据库,从表只保存了那条修改记录,
ADOM1.CancelBatch(arALL);
ADOD2.CancelBatch(arALL);
也没有用
ADOM1.Edit;
為什麼是這個順序?
主從表輸入不完整,一次出錯,修改后再次怎么也保存不了到數據庫ADOConnection1.BeginTrans;
try
ADODataSet1.Post;
ADODataSet2.UpdateBatch(arALL);
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;