ODAC (V9.5.15) 学习笔记(二十一)数据复制
用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) 学习笔记(二十一)数据复制的更多相关文章
- ODAC(V9.5.15) 学习笔记(十一)TOraEncryptor、TOraPackage和TOraAlerter
TOraEncryptor 名称 类型 说明 DataHeader TCREncDataHeader 一些附加信息放入加密数据中,包括: ehNone 无附加信息 ehTag GUID和随机生成的 ...
- python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0.zfill()方法语法:s ...
- ODAC(V9.5.15) 学习笔记(二)控件列表
ODAC的控件有26个,简单介绍如下: TOraSession 管理Oracle的连接 TOraQuery 使用SQL进行数据获取,自动将更新提交数据库 TSmartQuery 在处理字 ...
- ODAC(V9.5.15) 学习笔记(一)总论
一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题.下一步要开发B/S的程序了,打算 ...
- ODAC(V9.5.15) 学习笔记(十五)数据离线模式
数据离线模式(Disconnected Mode)是指数据库只有在需要的时候才连接,数据的处理放在客户端内存缓冲区中完成.这样做最大的好处是减少了网络资源依赖,对数据库服务器的资源开销和压力也减少.如 ...
- (C/C++学习笔记) 二十一. 异常处理
二十一. 异常处理 ● 异常的概念 程序的错误通常包括:语法错误.逻辑错误.运行异常. 语法错误指书写的程序语句不合乎编译器的语法规则,这种错误在编译.连接时由编译器指出. 逻辑错误是指程序能顺利运行 ...
- ODAC (V9.5.15) 学习笔记(二十)大数据量获取处理
ODAC获取数据的效率比较高,在Web程序中希望能够更快获取第一页的数据时,可以有几种方式: 1.在数据库中进行分页处理: 2.获取所有数据,只是快速返回第一页数据. 第一种方案对应用服务器资源消耗最 ...
- ODAC(V9.5.15) 学习笔记(十二)TOraLoader
名称 类型 说明 Columns TDAColumns 需要载入数据的每个字段定义 LoadMode TLoadMode 载入模式,包括: lmDirect 通过内部数据缓冲区载入到数据库中 lmDM ...
- ODAC(V9.5.15) 学习笔记(三)TOraSession(3)
3. 选项 TOraSession的Options有如下内容 名称 类型 说明 CharLength TCharLength 单个字符的长度,缺省0,表示从服务器获取对应的字符集中单个字符长度 Cha ...
随机推荐
- Scrum 是什么?
Scrum 是什么? Scrum 是当前最流行的敏捷软件开发方法论和实施框架.但就像人们对 “Agile” 术语的不同理解一样,不同的人对 “Scrum” 也有着不同的理解.那么,到底 Scrum 是 ...
- VS2010 调试不会命中当前断点
方法1.直接把整个文件格式化了一次,断点就可以用了Ctrl + A全选菜单:编辑-〉高级-〉设置选定内容的格式 (Ctrl+K, Ctrl+F)通过比较文件发现是由于制表符Tab(0x09)引起的,原 ...
- C语言宏高级用法 [总结]
1.前言 今天看代码时候,遇到一些宏,之前没有见过,感觉挺新鲜.如是上网google一下,顺便总结一下,方便以后学习和运用.C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简 ...
- [51单片机] TFT2.4彩屏1 [文字显示 画矩形]
>_<:因为要驱动彩屏,所以这里采用STC90C516RD+单片机[51的89C52也行,就是可能内存在接下来的实验中可能会内存不够],晶振尽量采用高一点的,这里采用24MHz的. > ...
- OpenWrt资料汇总
上周末折腾了一下OpenWrt,打算把Facebook的网络模拟工具部署到上面,最终以失败告终.上github看,发现已经有人给作者提了issue,作者表示部署在OpenWrt上会很有用,但确实在Op ...
- 动软商城系统可免费下载了,专业批发分销商城系统,ASP.NET商城系统
动软商城系统是一套集CMS资讯+品牌Shop商城+WAP商城+APP手机客户端+SNS用户互动社区于一体的全新电商营销解决方案.主要为企业树立企业品牌形象,实现独立网络推广,充分集成网站SEO.企业微 ...
- ASP怎么解除文件上传200kb限制
第一步:修改IIS设置,允许直接编辑配置数据库.打开,Internet信息服务第二步:先在服务里关闭iis admin service服务,找到windows\system32\inetsrv\下的m ...
- 【LeetCode】Power of Two
问题描写叙述 Given an integer, write a function to determine if it is a power of two. 意:推断一个数是否是2的n次幂 算法思想 ...
- GDAL 遥感图像处理后的数据保存为图像文件的实现方法
在遥感图像处理中,GDAL库不仅能读取和处理大部分的遥感图像数据,而且还能够实现图像处理后将数据保存为图像的功能. 本文就详细介绍如何将内存中的图像数据保存为.tif格式. 首先,遥感数据处理完,保存 ...
- [Aaronyang] 写给自己的WPF4.5 笔记24 [与winform交互-flash-DEMO-收尾篇1/6]
=====潇洒的版权线======www.ayjs.net===== Aaronyang ===== AY ====== 安徽 六安 杨洋 ====== 未经允许不许转载 ====== 1.新 ...