Oracle 复制一条 改主键,在一个表中复制一条同样的记录到同一个表中,只修改主键内容(200分)...

摘自:HUBDOG大虾的葵花宝典

通常,你完成此项任务时使用 TBatchMove 构件。但 TBatchMove 也有不合适的情况:

- 你并不希望拷贝所有的记录,也不想使用过滤器。

- 你希望用到目的 DataSet 的有效事件(如 BeforPost,OnValidate,等)。

- 或者更坏的情况,两 DataSet 的结构并不相同。

使用下面的简单过程,上面的问题都可以被解决,所有字段中的数据将被拷贝到另外一个 Dataset 中的同名字段中。但这里面也存在一些限制:

- 不能拷贝查找和计算字段

- 当存在相同字段名但数据类型不同时,你需要先使用 Assign 判断。

- 当然,目的字段不能是只读的。

procedure CopyRecord(Source, Destination: TDataSet);

var Ind:longint;

SField, DField: TField;

begin

for Ind:=0 to Source.FieldCount - 1 do

begin

SField := Source.Fields[ Ind ];

DField := Destination.FindField( SField.FieldName );

if (DField <> nil) and (DField.FieldKind = fkData) and

not DField.ReadOnly then

if (SField.DataType = ftString) or

(SField.DataType <

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值