用TVirtualTable在内存中缓存TOraQuery中的数据,主要应用场景是参照其他数据,需要将TOraQuery中的数据复制到TVirtualTable,由于没有类似于TClientDataSet的Data属性,所以只能考虑数据对拷。原来考虑的是通过数据流方式,采用:

ms := TMemoryStream.Create;
tryOraQuery1.SaveToXML(ms);VirtualTable1.LoadFromStream(ms);VirtualTable1.Open;
finallyms.free;
end;

遇到中文内容时,个别情况下会触发解析异常错误,查看XML都很正常,就是有汉字而已,估计是编码问题处理的不好导致。并且字段属性没有被赋值过来,后来改成如下模式:

class function TPublicTools.CopyDataSet(ASourceDataSet : TOraDataSet;ADestDataSet : TVirtualTable): Boolean;
vari: Integer;
beginResult := False;if not (ASourceDataSet.Active and Assigned(ADestDataSet)) thenExit;//复制数据集 ,其实就这么简单
  ADestDataSet.Assign(ASourceDataSet);//开启内存表
  ADestDataSet.Open;//处理字段格式for i := 0 to ADestDataSet.Fields.Count -1 dobeginADestDataSet.Fields[i].Visible :=ASourceDataSet.FieldByName(ADestDataSet.Fields[i].FieldName).Visible;ADestDataSet.Fields[i].DisplayLabel :=ASourceDataSet.FieldByName(ADestDataSet.Fields[i].FieldName).DisplayLabel;ADestDataSet.Fields[i].DisplayWidth :=ASourceDataSet.FieldByName(ADestDataSet.Fields[i].FieldName).DisplayWidth;if ADestDataSet.Fields[i] is TFloatField thenTFloatField(ADestDataSet.Fields[i]).DisplayFormat :=TFloatField(ASourceDataSet.FieldByName(ADestDataSet.Fields[i].FieldName)).DisplayFormat;end;Result := ADestDataSet.Active;
end;

直接用Assign来实现数据复制,效果很好,其实处理问题应该考虑简单点。

转载于:https://www.cnblogs.com/ChinaEHR/p/4536721.html

ODAC (V9.5.15) 学习笔记(二十一)数据复制相关推荐

  1. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  2. Mr.J-- jQuery学习笔记(二十一)--模拟微博页面

    先看之前的节点操作方法:Mr.J-- jQuery学习笔记(二十)--节点操作方法 Mr.J-- jQuery学习笔记(五)--属性及属性节点 Mr.J-- jQuery学习笔记(十一)--事件委托  ...

  3. kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

    本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...

  4. ODAC(V9.5.15) 学习笔记(三)TOraSession(3)

    3. 选项 TOraSession的Options有如下内容 名称 类型 说明 CharLength TCharLength 单个字符的长度,缺省0,表示从服务器获取对应的字符集中单个字符长度 Cha ...

  5. ODAC(V9.5.15) 学习笔记(十七)主从模式

    主从模式(Master/Detail mode)是指建立主表和从表关系的多个数据集集合模式. 1. 关系设置 要设置主从模式,必须有一个主表数据集(TDataSet)和一个从表数据集(TDataSet ...

  6. ODAC(V9.5.15) 学习笔记(十九)主键值自动生成

    ODAC支持通过Oracle的序列来自动生成表的主键功能.这个过程允许在客户端自动完成,不需要过多代码.这个对一些要求自动增长字段做主键的场合非常有用.其实现步骤为: 1.数据库必须先建立生成主键的序 ...

  7. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(1)

    1.SQL相关 名称 类型 说明 BaseSQL String 没有被AddWhere.SetOrderBy.FilterSQL等方法处理过的原始SQL语句 FinalSQL String 被AddW ...

  8. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(2)

    2.连接相关 名称 类型 说明 Connection 指向一个数据库连接对象 Disconnected 设置为True将在数据库关闭后继续保持数据集的开启状态. 3. 数据获取 名称 类型 说明 Fe ...

  9. linux驱动开发学习笔记二十一:异步通知

    一.异步通知简介 我们首先来回顾一下"中断",中断是处理器提供的一种异步机制,我们配置好中断以后就可以让处理器去处理其他的事情了,当中断发生以后会触发我们事先设置好的中断服务函数, ...

最新文章

  1. [原]Java 正则 多子串 匹配 替换
  2. [20150409]只读表空间与延迟块清除.txt
  3. 小程序访问本地服务器拒绝访问,文件夹拒绝访问的原因与解决办法
  4. php操作excel表格的导入和导出
  5. ai人工智能操控什么意思_为什么要建立AI分散式自治组织(AI DAO)
  6. 【物联网项目系列】——使用netty框架做一个环保hj212协议即时通讯工具(接收解析处理实时数据)
  7. 导线平差计算软件的NABCD分析
  8. 车载与体征/手势检测 毫米波雷达信号处理流程
  9. 宁波市重点首版次软件认定申报,区块链可申请 | 产业区块链发展周报
  10. 很全的ABAP入门资料
  11. 修改log4j的日志文件的日志级别
  12. 某妹游戏登录加密(webpack)
  13. SpringBoot 启动报错 No property found for type !
  14. Android默认时区大全
  15. 【按键精灵】sub子程序、调用子程序
  16. 01、iphone越狱恢复,去越狱,手机归零
  17. vscode css智能补全_在 Webstorm 伤透我的心后,我决定尝试 VS Code
  18. 瑞波加入超级账本区块链联盟
  19. 周长为定长的所有平面四边形P中,面积最大的为正方形。
  20. 课程设计:飞机航班信息查询系统

热门文章

  1. Java 多线程详解(三)------线程的同步
  2. 利用系统级别的光谱成像技术分析细胞器的互作组学
  3. python不规则切片_python的切片(slice)机制
  4. 64位浮点数_浮点数误差
  5. 数组元素替换_LeetCode基础算法题第183篇:一维数组的重新洗牌
  6. seo技术_基础知识_网站pr值的意义_日思663.带你入门SEO基础知识
  7. java lambda表达式详解_java8新特性-Lambda表达式的详解(从0开始)
  8. php调用视频功能,PHP代码调用示例
  9. There is insufficient memory for the Java Runtime Environment to continue.
  10. Opencv使用cv::matchTemplate进行模板匹配