使用TBatchMove出错(50分)

  • 主题发起人 主题发起人 Sheldon
  • 开始时间 开始时间
S

Sheldon

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TBatchMove想把数据从源Table移到目标Table,由于
目标Table定义了参照完整性, 总是出现错误:'Detail table exist',
但其实要移动的数据并不会破坏参照完整性.(我用的是Paradox表)
如何顺利移动数据,请大家指点迷津, 谢谢!
 
怎么没人灌水?
 
I can only listen
 
BatchMove的mode若为batDelete,batAppendUpdate,batUpdate,必死无疑
 
BatchMove的Mode我设置的是batCopy, 目标表的纪录应
被源表覆盖, 但总是不成.
 
若使用参照完整性,则请注意BatchMove的先后顺序。
 
是否能先去掉参照完整性,再恢复!
 
请行关闭目标表:Table2.Active:=False;
 
主从关系最好用触发器维护,比完整性灵活多了。
 
很可惜,BatchMove 只备份数据和有效性验证!
如果要用 BatchMove 的batCopy来恢复, 那就惨了. :(
目标表的参照完整性就被覆盖没了!

BTW,:LeeChange,能否介绍一下,怎样用触发器维护主从关系?
多谢了!

 
batCopy 不是只 copy 表的内容,而是整个表,就是把原来的文件覆盖掉了,
所以,原来的完整性就会被破坏,会引起数据库的不满
 
那。。。
 
我也用过BatchMove,不好用,我劝你改行。用编程实现。

SourceTable.First;
For i:=0 to SourceTable.Recordcount-1 do
begin
for k:=0 to SourceTable.Fields.Count-1 do
begin
DestinationTable.Fields[k].Value :=
DestinationTable.Fields[k].Value;
end;
DestinationTable.Post;
SourceTable.next;
end;

多好。如果是oracle,那就更爽了“Insert into DestinationTable (select
* from SourceTable where ...)”
 
TO:starbzj

DestinationTable.Fields[k].Value :=
DestinationTable.Fields[k].Value;
这一句是不是有问题?
 
Crab兄道出了关键
 
后退
顶部