摘自: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 <> DField.DataType) then

DField.AsString := SField.AsString

else

DField.Assign( SField )

end;

end;

旧方法:

DEST.Open;

ORIGIN.Open;

while not ORIGIN.Eof do

begin

if ORIGINTYPE.AsString = 'T' then

with ORIGIN do

begin

DEST.Append;

DEST.FieldByName('TYPE').AsString := ORIGINTYPE.AsString;

DEST.FieldByName('FIRSTNAME').AsString := ORIGINFIRSTNAME.AsString;

DEST.FieldByName('LASTNAME').AsString := ORIGINLASTNAME.AsString;

DEST.FieldByName('CPF').AsString := ORIGINCPF.AsString;

DEST.FieldByName('PARTY').AsString := ORIGINPARTY.AsString;

DEST.Post;

end;

ORIGIN.Next;

end;

使用该过程的调用示范:

DEST.Open;

ORIGIN.Open;

while not ORIGIN.Eof do begin

if ORIGINTYPE.AsString = 'T' then begin

DEST.Append;

CopyRecord( ORIGIN, DEST );

DEST.Post;

end;

ORIGIN.Next;

end;

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

  1. oracle查询结果插入新表,如何将查询出来的数据记录插入新表??

    有两个表 一个是我的查询表dw_score  一个是我将查询出来的结果插入的新表dw_ribao_zeng 通过dw_score查询出来的结果要插入到dw_ribao_zeng表 这是我的一个查询语句 ...

  2. python字典改键_python修改字典键(key)的方法

    python字典中,值可任意更改:但键是唯一的,不支持直接修改.若真的需要修改字典中的键,可通过几种间接方式实现. 新建空白字典. info = {} 给字典添加键-值对. info["x& ...

  3. 顺序表-删除所有元素值为x结点(另建表存放+复制到原表)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 这里要删除顺序表的所 ...

  4. python修改key名_python修改字典键(key)的方法

    python字典中,值可任意更改:但键是唯一的,不支持直接修改.若真的需要修改字典中的键,可通过几种间接方式实现. 新建空白字典. info = {} 给字典添加键-值对. info["x& ...

  5. oracle change schema,使用pt-online-schema-change修改主键时注意

    使用 pt-online-schema-change 做在线ddl最添加普通索引.列,修改列类型.添加默认值等使用比较常规,但涉及到要修改的是主键时就有点棘手.在我修改线上实例过程中,有这样的需求,不 ...

  6. Oracle添加主键、删除主键、修改主键

    一.前提 主键解释: 一个表的唯一关键字 比如一个学生表 学号不能重复且唯一 ,学号就是关键字,即为主键. 区别于外键: 外键就是跟其他表联系的字段 ,还是比如有一张学生表 还有一张选课表,这个时候要 ...

  7. Oracle 12c 能否在2小时内完成一张14亿条记录的表结构字段类型变更

    原文链接:https://www.modb.pro/db/22757 概述 前面分享过Oracle大表在线修改的脚本(在线重定义),经过几轮的测试发现,都存在些缺陷,效率始终不是很满意.这次把索引和统 ...

  8. 2.4.3 Mybatis 高级查询, 复杂映射, 返回主键, 动态SQL if, set, foreach, 核心配置文件深入,plugins标签, 多表查询, 嵌套查询

    目录 Mybatis 复杂映射&配置文件深入 一 Mybatis高级查询 1.1 ResutlMap属性 1.2 多条件查询(三种) 1.3 模糊查询 二 Mybatis映射文件深入 2.1 ...

  9. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键

    第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...

最新文章

  1. MiniDao普通项目集成方案
  2. 车载信息安全企业自发成立联盟
  3. 用友二次开发 用友控件 Js宿主脚本 调用用友T6 登录 参照 控件示例
  4. 小度智能音箱维修点_会投屏电视的智能音箱——小度智能音箱PLAY青春版轻体验...
  5. linux 命令 find -exec 操作的问题
  6. Checksum 校验和
  7. 组装电脑多少钱一台_客户花9000元组装一台电脑,奸商赚5000块,利润真吓人
  8. mysql实训报告_MySQL实验报告
  9. tp5完全开发手册_TP5.1解决跨域
  10. 计算机教室维护内容,高校多媒体教室计算机维护措施
  11. 金蝶计算机会计实验报告总结,会计实训总结(精选5篇)
  12. OPNsense用户手册-用户界面
  13. 最难学的10大编程语言排行榜,Java只排第三,第一名出乎意料
  14. 金山毒霸11,更新内容,问题修复了什么?
  15. 手机商城系统开发流程_各系统业务逻辑关系架构图_OctShop
  16. Data Structures and Algorithms (English) - 6-8 Percolate Up and Down(20 分)
  17. 骁龙780G和骁龙888哪个好 骁龙780G和骁龙888对比,哪个更强
  18. 2.1.4.2 端口Banner信息获取
  19. Oracle增加修改删除字段
  20. 晶圆在低温探针台中的安装方式——Cyanoacrylate粘合剂

热门文章

  1. 采用批处理命令对文件进行解压及采用SQLCMD进行数据库挂载
  2. 慎用ArrayList的contains方法,使用HashSet的contains方法代替
  3. win7桌面图片不显示缩略图问题
  4. 安卓案例:初试谷歌图表
  5. Python案例:格式化输出斐波拉契数列
  6. 数据库笔记02:查询与统计数据
  7. QT案例:登录对话框——主窗口
  8. c语言求两个有序表合成差集代码,两个有序链表求差集,合并为一个有序链表...
  9. sql判断时间差值_Oracle判断某人员在某地是否有超过指定时间的停留
  10. centos7环境下搭建storm集群