所有的数据集类组件都是从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. 编写一种递归方法,它返回数N的二进制中表示1的个数。

    /** * 编写一种递归方法,它返回数N的二进制中表示1的个数.利用这样一个事实:N为奇数,其1的个数为N/2的二进制中1的个数加1. * @author wulei * */public class ...

  2. Nodejs【单机】多进程模式集群

    Nodejs[单机]多进程模式集群实例: 1.安装:npm install -s cluster 2.服务代码: var debug = require('debug'); var express = ...

  3. sqlserver字符集问题(中文出乱码,排序错误等)

    在创建sqlserver 数据库时未指定排序字符集,databases则会使用instances的排序规则.为了支持中文,需要设置成Chinese_PRC_CI_AS. (1)通过sql脚本修改 -- ...

  4. python 翻译爬虫

    import urllib.request import urllib.parse import json while 1: content=input("请输入要翻译的内容:") ...

  5. Python全栈-数据库介绍与基本操作

    .数据库管理软件的由来 数据库的产生是为了解决数据的永久储存.数据安全.以及对方对外服务时能够实现并发服务等效果.例如解决前面所学的Scoket编程中,在不考虑硬件问题的基础上,服务端服务多个客户端时 ...

  6. Sitecore 8.1 - 特性和功能

    营销基础 一个新的Sitecore品牌术语取代了体验营销(以前的Sitecore DMS),这是Sitecore体验数据库(xDB)现在所在的位置. Sitecore 7.5和Sitecore 8.0 ...

  7. C#-----创建DataTable对象

    //DataTable表示内存中数据的一个表 DataTable dt = new DataTable(); /** * public DataColumn Add(string columnName ...

  8. FilenameFilter

    Introduction: java.io.FileNameFilter is a interface which is for filtering by filename, if filename ...

  9. MongoDB-Java的两个基本操作Upsert和insertMany

    此文只是为了记录几个基本操作,首先Upsert,有多种方法可以进行,但是都需要指定UpdateOptions.upsert(true),其中最简单的办法如下(eqq是一个用来filter的BSON,具 ...

  10. 【JavaScript 6连载】三、构造函数

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...