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

ms := TMemoryStream.Create;
try
OraQuery1.SaveToXML(ms);
VirtualTable1.LoadFromStream(ms);
VirtualTable1.Open;
finally
ms.free;
end;

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

class function TPublicTools.CopyDataSet(ASourceDataSet : TOraDataSet;
ADestDataSet : TVirtualTable): Boolean;
var
i: Integer;
begin
Result := False;
if not (ASourceDataSet.Active and Assigned(ADestDataSet)) then
Exit;
//复制数据集 ,其实就这么简单
ADestDataSet.Assign(ASourceDataSet);
//开启内存表
ADestDataSet.Open;
//处理字段格式
for i := to ADestDataSet.Fields.Count - do
begin
ADestDataSet.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 then
TFloatField(ADestDataSet.Fields[i]).DisplayFormat :=
TFloatField(ASourceDataSet.FieldByName(ADestDataSet.Fields[i].FieldName)).DisplayFormat;
end;
Result := ADestDataSet.Active;
end;

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

ODAC (V9.5.15) 学习笔记(二十一)数据复制的更多相关文章

  1. ODAC(V9.5.15) 学习笔记(十一)TOraEncryptor、TOraPackage和TOraAlerter

    TOraEncryptor 名称 类型 说明 DataHeader TCREncDataHeader 一些附加信息放入加密数据中,包括: ehNone 无附加信息 ehTag   GUID和随机生成的 ...

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

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

  3. ODAC(V9.5.15) 学习笔记(二)控件列表

    ODAC的控件有26个,简单介绍如下: TOraSession  管理Oracle的连接  TOraQuery  使用SQL进行数据获取,自动将更新提交数据库  TSmartQuery    在处理字 ...

  4. ODAC(V9.5.15) 学习笔记(一)总论

    一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题.下一步要开发B/S的程序了,打算 ...

  5. ODAC(V9.5.15) 学习笔记(十五)数据离线模式

    数据离线模式(Disconnected Mode)是指数据库只有在需要的时候才连接,数据的处理放在客户端内存缓冲区中完成.这样做最大的好处是减少了网络资源依赖,对数据库服务器的资源开销和压力也减少.如 ...

  6. (C/C++学习笔记) 二十一. 异常处理

    二十一. 异常处理 ● 异常的概念 程序的错误通常包括:语法错误.逻辑错误.运行异常. 语法错误指书写的程序语句不合乎编译器的语法规则,这种错误在编译.连接时由编译器指出. 逻辑错误是指程序能顺利运行 ...

  7. ODAC (V9.5.15) 学习笔记(二十)大数据量获取处理

    ODAC获取数据的效率比较高,在Web程序中希望能够更快获取第一页的数据时,可以有几种方式: 1.在数据库中进行分页处理: 2.获取所有数据,只是快速返回第一页数据. 第一种方案对应用服务器资源消耗最 ...

  8. ODAC(V9.5.15) 学习笔记(十二)TOraLoader

    名称 类型 说明 Columns TDAColumns 需要载入数据的每个字段定义 LoadMode TLoadMode 载入模式,包括: lmDirect 通过内部数据缓冲区载入到数据库中 lmDM ...

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

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

随机推荐

  1. Scrum 是什么?

    Scrum 是什么? Scrum 是当前最流行的敏捷软件开发方法论和实施框架.但就像人们对 “Agile” 术语的不同理解一样,不同的人对 “Scrum” 也有着不同的理解.那么,到底 Scrum 是 ...

  2. VS2010 调试不会命中当前断点

    方法1.直接把整个文件格式化了一次,断点就可以用了Ctrl + A全选菜单:编辑-〉高级-〉设置选定内容的格式 (Ctrl+K, Ctrl+F)通过比较文件发现是由于制表符Tab(0x09)引起的,原 ...

  3. C语言宏高级用法 [总结]

    1.前言  今天看代码时候,遇到一些宏,之前没有见过,感觉挺新鲜.如是上网google一下,顺便总结一下,方便以后学习和运用.C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简 ...

  4. [51单片机] TFT2.4彩屏1 [文字显示 画矩形]

    >_<:因为要驱动彩屏,所以这里采用STC90C516RD+单片机[51的89C52也行,就是可能内存在接下来的实验中可能会内存不够],晶振尽量采用高一点的,这里采用24MHz的. > ...

  5. OpenWrt资料汇总

    上周末折腾了一下OpenWrt,打算把Facebook的网络模拟工具部署到上面,最终以失败告终.上github看,发现已经有人给作者提了issue,作者表示部署在OpenWrt上会很有用,但确实在Op ...

  6. 动软商城系统可免费下载了,专业批发分销商城系统,ASP.NET商城系统

    动软商城系统是一套集CMS资讯+品牌Shop商城+WAP商城+APP手机客户端+SNS用户互动社区于一体的全新电商营销解决方案.主要为企业树立企业品牌形象,实现独立网络推广,充分集成网站SEO.企业微 ...

  7. ASP怎么解除文件上传200kb限制

    第一步:修改IIS设置,允许直接编辑配置数据库.打开,Internet信息服务第二步:先在服务里关闭iis admin service服务,找到windows\system32\inetsrv\下的m ...

  8. 【LeetCode】Power of Two

    问题描写叙述 Given an integer, write a function to determine if it is a power of two. 意:推断一个数是否是2的n次幂 算法思想 ...

  9. GDAL 遥感图像处理后的数据保存为图像文件的实现方法

    在遥感图像处理中,GDAL库不仅能读取和处理大部分的遥感图像数据,而且还能够实现图像处理后将数据保存为图像的功能. 本文就详细介绍如何将内存中的图像数据保存为.tif格式. 首先,遥感数据处理完,保存 ...

  10. [Aaronyang] 写给自己的WPF4.5 笔记24 [与winform交互-flash-DEMO-收尾篇1/6]

      =====潇洒的版权线======www.ayjs.net===== Aaronyang ===== AY ====== 安徽 六安 杨洋 ======   未经允许不许转载 ====== 1.新 ...