数据库记录的复制(100分)

  • 主题发起人 主题发起人 zhj.nc
  • 开始时间 开始时间
Z

zhj.nc

Unregistered / Unconfirmed
GUEST, unregistred user!
我想复制一条记录,比如我修改一条记录某个列的值,保存时做为新记录保存。
 
原纪录还要吗?
 
可用AppendRecord或InsertRecord,利用函数参数插入需要修改的列
 
generalzzy兄台:
原记录不要,怎么会作为新记录保存呢?肯定要!
 
用insert不就可以了吗
 
我再补充一下,我想实现借用功能,希望添加一条记录,主关键字不同,而其他数据项
相同。当然,可以把每个数据项依次付值,但有几十个数据项,我这个人又比较懒,希望
有数据库或者DELPHI的数据集提供这样一个函数,可复制。
 
如果是sql server或其它数据库,可以使用
insert into t1 (select * from t1 where key=justmodified)
当然,要处理一下主关键词,如果是默认添加,可以在后面的select 语句中写全要
复制的字段名称
 
你可以加一条触发器。
 
懒人请参阅如下过程,你将得到启发
Procedure AppendCurrent(Dataset:Tdataset);
Var
aField : Variant ;
i : Integer ;
Begin
//Create a variant Array
aField := VarArrayCreate(
[0,DataSet.Fieldcount-1],
VarVariant);

// read values into the array
For i := 0 to (DataSet.Fieldcount-1) Do Begin
aField := DataSet.fields.Value ;
End;

DataSet.Append ;

// Put array values into new the record
For i := 0 to (DataSet.Fieldcount-1) Do Begin
DataSet.fields.Value := aField ;
End;
End;
 
你可以用一组SQL 来完成。
Create Table temptable as select * from YourTable where KeyID=YourID;
update table temptable temptable set KeyID=newid;
insert into YourTable select * from temptable;
drop table temptable;
即先生成临时表,改变, 然后再插入你的表中,最后删除临时表。
可以了吗?
 
多人接受答案了。
 
其实这种类似问题用TclientDateSet 最好了!,
使用Assign local Data 建立一个临时的数据集(作为剪贴板),
将要复制的记录存入,需要时可多次复制粘贴!

 
后退
顶部