master/detail表刷新错误!(50分)

  • 主题发起人 主题发起人 liuxianghui
  • 开始时间 开始时间
L

liuxianghui

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi 4 C/S
有这样的master/detail表,建在InterBase,结构如下:
Table2为detail表,key is main_id
database-->table1-->provider1-->clientdataset1->dsource1
| | |
| main_id,Dsource DataSetField
| A |
| | V
+--->table2 clientdataset2->dsource2
with datamodule1.clientdataset1do
begin
try
applyupdates(-1);
refresh;
except
cancelupdates;
end;
end;
对主表记录进行删除,可以刷新;
对主表记录进行添加,applyupdates后,cds2的changecount仍
大于0,不可刷新,cancelupdates报告无法操作。
百思不得其解,望高手指点迷津。
 
刚才将二表转为Paradox格式,问题仍然存在,第一次可以applyupdates,不刷新
时无报错,再次添加记录进行applyupdates,报错‘表已被使用’,
hangecount=1。我使用的是DbNavigator,连到clientdataset1(主表);
奇怪的是,对记录进行修改和删除,主副表均完全正常,而添加记录时却不行,实
际上applyupdates后数据已存入表中,为何changecount不清零,且不报错?
 
另:我说的添加是指主副表同时添加记录。分开添加无问题。
 
我也有个这样的为题,我用的是sql7,现在还没有解决
 
附加功能 将问题提前
 
主表中绝对有自增型字段;而且是作为主从表的关联字段;尽量不用此种字段做关联关键字段
applyupdates(-1)时如果有错,也会提交可能提交的部分到后台;
为什么没有报错是因为:
try
applyupdates(-1);
refresh;
except
cancelupdates;
end;
把错误屏蔽了;
最好在提交之前CheckBrowsermode;

 
ignore the error
 
liuxianghui:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
接受答案了.
 
后退
顶部