所有的数据集类组件都是从TMemDataSet继承下来的,该组件实现了内存中对数据的管理,其主要的属性、方法和事件如下。

1.数据更新

名称

类型

说明

CachedUpdates

Boolean

数据集是否采用缓冲模式

ApplyUpdates

将缓冲区中未提交的数据提交数据库,但不执行数据库的事务操作。此时缓冲区数据仍然存在,UpdateStatus状态处于修改状态,需要调用CommitUpdates来清除缓存中的数据,并将状态还原成非修改状态。ApplyUpdates没有放在Try Exception块中,如果有数据更新失败,将触发异常信息提示,如果在OnUpdateError中没有将UpdateAction设置为uaAbort将再次触发错误信息提示。

CancelUpdates

放弃对缓冲区中未提交数据的变动,恢复原来的状态

RestoreUpdates

将数据集中所有缓冲区数据恢复到调用ApplyUpdates之前的更新状态,一版用于更新失败时使用

CommitUpdates

清除缓冲区的未提交数据,但是通过OnUpdateRecord或OnUpdateError事件跳过的修改内容不会被清除

UpdatesPending

Boolean

判断缓冲区是否存在未提交的数据,True表示存在

UpdateStatus

TUpdateStatus

返回数据集在当前记录下的更新状态。

UpdateResult

TUpdateAction

返回数据集调用ApplyUpdates方法后在该记录的执行状态

UpdateRecordTypes

在缓冲模式下返回当前记录的更新模式

LocalUpdate

Boolean

是否本地更新,如果是True则将阻止数据集自动将数据更新提交服务器,而是缓冲在本地内存中。

DeferredPost

与Post不同的是,DeferredPost将已经完成的修改提交数据库永久保存,同时数据集状态仍然停留在编辑或新增状态(dsEdit, dsInsert),调用Cancel函数并不能取消已经提交数据库的修改内容,使用上需慎重

RevertRecord

在缓冲模式下,撤销对当前记录的数据更新内容

OnUpdateRecord

在更新某条记录时触发,如果是在缓冲模式下,则事件在ApplyUpdates之后触发。事件的UpdateAction缺省为uaFail,如果代码操作成功则需要设置为uaApplied。其取值如下:

uaFail    触发失败异常信息

uaAbort        中断后续更新并回滚

uaSkip    跳过,但不报错

uaRetry        重新尝试,很容易形成死循环

uaApplied     代码已经处理,ODAC不再自动处理

需要注意ODAC的OnUpdateRecord事件与系统自带TDataSetProvider的OnUpdateRecord事件略有不同,ODAC的该事件一旦编写了代码,数据集就将数据更新的权利交给了代码,不再自动更新数据。

OnUpdateError

当数据更新发生错误时触发,如果是在缓冲模式下,则事件在ApplyUpdates之后触发。事件的UpdateAction缺省为uaFail,通过访问事件参数DataSet的各个字段TField.OldValue和TField.NewValue获取原值和新值,设置事件的UpdateAction为uaRetry可以重新尝试更新。ApplyUpdates没有放在Try Exception块中,将触发异常信息提示,如果在OnUpdateError中没有将UpdateAction设置为uaAbort将再次触发错误信息提示。

ODAC(V9.5.15) 学习笔记(四)TMemDataSet (1)的更多相关文章

  1. ODAC(V9.5.15) 学习笔记(四)TMemDataSet (3)

    3.其他 名称 类型 说明 GetBlob TBlob 按照字段名获取当前数据集中某个Blob类型的字段值,并以TBlob对象形式返回 Prepared Boolean 检查Query的SQL是否已准 ...

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

    2.索引与过滤 名称 类型 说明 IndexFieldNames string 设置排序字段列表,每个字段之间通过分号分割.每个字段后可以有以下几种排序选项: ASC        升序 DESC   ...

  3. ODAC(V9.5.15) 学习笔记(四)TOraQuery (1)

    TOraQuery是ODAC中常用的一个组件,其继承关系如下: TDataSet ---TMemDataSet ---TCustomDADataSet ---TOraDataSet ---TCusto ...

  4. ODAC(V9.5.15) 学习笔记(四)TOraDataSet

    名称 类型 说明 SequenceMode TSequenceMode ODAC可以直接利用Oracle中的序列对象为表的主键赋值,从而实现主键自动增长的功能.该属性决定了在什么场合下使用序列: sm ...

  5. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(4)

    6.Options TCustomDADataSet的选择项为TDADataSetOptions,其成员介绍如下表 : 名称 类型 说明 TDADataSetOptions AutoPrepare B ...

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

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

  7. ODAC(V9.5.15) 学习笔记(十四)TCRBatchMove

    名称 类型 说明 AbortOnKeyViol Boolean 在处理数据时,如果发生主键冲突或主键校验失败时,是否中断 AbortOnProblem Boolean 发生问题时是否中断 Change ...

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

    7.其他 名称 类型 说明 FindKey 类似于BDE的相关功能,在当前数据集中查找指定的记录 FindNearest 移动游标到最符合查找要求的第一条记录处 FindMacro 当前数据集中是否存 ...

  9. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(3)

    4. 主从表关系 名称 类型 说明 MasterSource 从表对应于主表的DataSource组件 DetailFields 从表中对应于主表字段的外键字段 MasterFields 主表中关联从 ...

随机推荐

  1. 010-判断是否回传IsPostBack属性

    属性IsPostBack:判断是否回传 如果是第一次请求,则返回false 如果是回传请求,则返回true->说明:只有使用服务器端表单才可以正常使用IsPostBack->使用情境:当在 ...

  2. c# mongo 数组里对象更新

    var queryDetail = new BsonDocument("cNo", doc.cNo);                     queryDetail.AddRan ...

  3. Unity shader学习之反射

    shader如下: Shader "Custom/Reflection" { Properties { _Cubemap("Cubemap", Cube) = ...

  4. php核心纪要 整理

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 【Hadoop学习之三】Hadoop全分布式安装

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop3.1.1 全分布式就是集群,注意配置主机名. ...

  6. django中orm使用的注意事项

    必备小知识点 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者 ...

  7. 大数据权限管理工具 Apache Ranger 初识

    资料参考: Apache Ranger – Introduction http://ranger.apache.org/ 阿里云 Ranger简介 Apache Ranger初识 - 阿里云 大数据权 ...

  8. HCatalog 学习之路

    最近在使用sqoop把数据从hive数仓导出到mysql数据库中接触到了hcatalog,所以特意学习了解一下相关知识,据悉hcatalog还是apache顶级项目. 学习参考: HCatalog 介 ...

  9. Spring Batch 远程分区和远程分块的区别

    Partitioning is a master/slave step configuration that allows for partitions of data to be processed ...

  10. 使用BenchmarkSQL测试PostgreSQL

    BenchmarkSQL是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对EnterpriseDB.PostgreSQL.MySQL.Oracle以及SQL Server等数据库直接进行测 ...