主从表的batchupdate只有主表更新,从表不更新?什么原因?急!!!(100分)

  • 主题发起人 主题发起人 iwantflywithwin
  • 开始时间 开始时间
I

iwantflywithwin

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我的一段代码,t_exim是主表。t_exim_list是从表。现在的问题是只有主表更新了,
从表却不更新
try
dmd_legend.adoc_Legend.BeginTrans;
t_exim.Edit;
t_exim_list.Edit;
t_exim.FieldByName('is_exim').AsBoolean:=true;
t_exim.UpdateBatch(arCurrent);//更新当前主表
t_exim_list.UpdateBatch(arAll);//更新当前主表下的所有从表
dmd_legend.adoc_Legend.CommitTrans;
showmessage('回填成功!');
except
dmd_legend.adoc_Legend.RollbackTrans;
showmessage('保存错误!');
exit;
end;
 
又谁做过的,请不吝赐教
 
是很难,还是高手不屑于解答如此简单的问题??
 
用触发器
 
你的主、从表是通过什么方式关联的? 如果采用的是关联的方式/
在更新时,主表数据要触发更改,明细表数据就重新提取。
所以实质上明细表的数据已经重提,修改已经放弃了/
解决办法是要么不用设置主表关系,要么保存时禁止主从关系
 
to:逍遥浪子
我用的是TAdoDateSet(t_exim)主表,CommandTex为Select * from t_exim
TAdoDateSet(t_exim_List)从表,CommandTex为Select * from t_exim_list
设置t_exim_List从表的DateSource为主表Ds_t_exim
设置t_exim_List从表的MasterFields为两者关联主从关系
我可以正常存档,记的存档后从表t_exim_List.Requery一下,会避免下一次修改冲突!!!
可是主表删除不了??
try
dmd_legend.adoc_Legend.BeginTrans;
t_exim.delete;
t_exim.UpdateBatch(arCurrent);//更新当前主表
dmd_legend.adoc_Legend.CommitTrans;
showmessage('回填成功!');
except
dmd_legend.adoc_Legend.RollbackTrans;
showmessage('保存错误!');
exit;
end;
 
哈哈,ADO的BUG,要先更新從表,再更新主表,DELPHI4的BDE有此問題,5就解決了
然ADO的5和6的版本都有此現象
 
skywareyu79, 我试过了,可以运行。
逍遥泿子, 我的从表 :select * from t_exim where exim_no:exim_no
datasource:DS_exim
如果不是主从关系,确实也可以
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部