主从表的新增问题 这样子,我不知是该如何做才可以.主表新增后(未提交或是未存盘的时候),从表新增记录,从表的记录一存盘,就不见了(其实记录是应该还在的,因为UpdateBatch后就有了).难不成一定要到主表新增存盘之后从表才可以新增吗(这样从表存盘的数据才可见)?我搜索了却没有人有答案,你们都如何做的呢?我用的是TADOQuery. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 主表的记录没增加,干吗要先增加从表的数据,那不是有可能会造成废数据吗。给你个例子看看: If NOT ADOConnection1. InTransaction THEN ADOConnection1.BeginTrans; Try ADODSMaster.UpdateBatch; // 先提交Master。 Except // 若提交Master失败, ADOConnection1.RollbackTrans; // 回滚事务。 abort; // 退出。 End; Try ADODSDetail.UpdateBatch; // 提交Master成功,再提交Detail。 ADOConnection1.CommitTrans; // 若提交Detail成功,提交事务。 Except // 若提交Detail失败, ADODSMaster.CancelUpdates; // 则取消对Master的更新操作。 abort;End; 谢谢你!不过你说的我知道,我不是说提交主从表的所有数据时的问题.我可能没有说清楚,我是说主表新增一条记录,当主表还在dsInsert状态时,对从表添加了记录.然后从表post了,此时主表还在dsInsert状态.而我的意思是从表post后的那条记录就不见了.这时主从表都未到Update的时候,且主表还在dsInsert状态.我想不是要新增主表记录时,然后要对刚新增的记录进行添加的记录添加明细时不定要先post主表的那条记录吧. 按道理一定要先提交主表再提交从表。我的例子就是这样,如果主表提交失败,则不会去提交从表,从表如果失败也会将主表的提交回滚,这是相对安全的做法。如果向那么做,从表提交了,而主表却被cancel怎么办?从表的数据岂不是废了? 请教:界面中用户自定义字段的实现,大家通常是如何做的? 请高手帮忙从C++翻译到delphi 弱弱的问一个简单的SQL语句 MIDAS中应用服务器使用ADO时,Delphi经常出现假死!!! 把一个已经创建的对象写入共享内存,另一个进程从中取出来使用。 关于日期的问题 关于2台机器间文本或消息传送的问题 怎样获取本机上网的DNS地址? 300分求教问题:回答了此题我另开帖子送分 求助:怎么改变 win32 内核的一个文件,使任务栏不显示,谢谢! 100分求深入学习DELPHI的好书 菜鸟问题, 请大虾帮忙: 如何屏蔽DB控件输入错误时的错误系统信息?
If NOT ADOConnection1. InTransaction THEN
ADOConnection1.BeginTrans;
Try
ADODSMaster.UpdateBatch; // 先提交Master。
Except // 若提交Master失败,
ADOConnection1.RollbackTrans; // 回滚事务。
abort; // 退出。
End;
Try
ADODSDetail.UpdateBatch; // 提交Master成功,再提交Detail。
ADOConnection1.CommitTrans; // 若提交Detail成功,提交事务。
Except // 若提交Detail失败,
ADODSMaster.CancelUpdates; // 则取消对Master的更新操作。
abort;
End;