有什么最简单的办法将一个table的一条记录复制到另一个与它结构相同的另一个table?(50分)

  • 主题发起人 主题发起人 xiecc
  • 开始时间 开始时间
X

xiecc

Unregistered / Unconfirmed
GUEST, unregistred user!
由于表结构比较复杂,我不想给每个Fileds一个个赋值,也不想用SQL语句。
 
for i:=0 to table1.FieldCount-1 do
table2.fields.AsVariant:=table1.fields.AsVariant;
 
那就用TBatchMove吧,很简单,很实用
放一个TBatchMove控件,指定源数据集、目标数据集,如果两个表结构一样
就不用指定字段Mapping,然后executive就ok.

不过如果是后台大型数据库,建议你还是用SQL语句来实现,这样数据处理一直
在后台数据库,他自己可以优化,要快的。如果是桌面库,就罢了。

 
可人家只要复制一条记录呀
 
.value 即可,少打好几个字母:)
 
如果你的表中有自动生成的字段如自动增量芝类的东西
那就得注意一点了
小天的方法不错,至于效率么,肯定是用sql语句来得高
如果你需要很多次用得话,我劝你还是写个过程用sql吧
 
找到这个记录的关键字(如ID), 然后
'insert into table2 select * from table1 where id='+table1.fieldbyname(id).asstring
 
用TTable的batchmove函数可以完成
batchmove的参数batAppendUpdate可以将原表中而目标表中不存在的记录复制到
目标表中,batchmove还又其他参数
 
INSERT INTO 新表 SELECT * FROM 旧表 WHERE "能筛选出该记录的条件"
 
用TTable的batchmove函数功能简单,方便
但大批量移动记录,用TBatchMove构件
 
我的方法不行吗? 用一条SQL语句就可以了吧?
 
例如:要将table1当前字段填入table2:

table2.edit; // 或者table2.insert, table2.append;
if table1.GetCurrentRecord(table2.ActiveBuffer) then // 将table2当前所有
//字段填成table1当前所
//有字段, 返回true表示成功
table2.post
else
table2.cancel;
 
其实,最简单的还是用SQL语句:
insert into a select * from b where ...
将你如何选择一条记录的条件写在where后面即可。
 
若是在单层结构中是TClientDataSet和TTable该怎样呢?
 
用函数 Insert 可实现!
Table1.InsertRecord (["中国","北京","五洲"]);

 
batchmove 一条吧...
 
如果不知道要插入的记录在目标纪录中有没有,怎么办?
 
insert into targettable select * from source where .... 有什么不好的.
这么多人劝你,我看您还是从了吧.
 
Sorry,由于连到大富翁的网速实在太慢,所以今天才给分。
见者有分,大家分了吧!

 
嘿嘿。我也一份。
for I := 0 to SourceDataSet.FieldCount - 1 do
if not SourceDataSet.Fields.IsNull then
DestDataSet.Fields.Assign(SourceDataSet.Fields);
DestDataSet.CheckBrowseMode;
 
后退
顶部