zoukankan      html  css  js  c++  java
  • ClientDataSet中的错误处理

    当修改数据发生错误时会先触发DataSetProvider.OnUpdateError事件处理过程然后触发ClientDataSet.OnReconcileError事件处理过程。

    OnUpDateError原型:

    procedure OnUpdateError(
    Sender: TObject;//触发此事件的对象
    DataSet: TCustomClientDataSet; //产生错误的数据集
    E: EUpdateError; //生成的错误对象
    UpdateKind: TUpdateKind;//指示是什么操作产生的错误TUpdateKind = (ukModify, ukInsert, ukDelete);
    var Response: TResolverResponse//产生错误生的操作TResolverResponse = (rrSkip, rrAbort, rrMerge, rrApply, rrIgnore);
    );
    {
    rrSkip:跳过产生错误的记录。
    
    rrAbort:停止操作找RollBack。
    
    rrMerge:把原数据与修改的数据合并。
    
    rrApply:已更正错误,再次更新数据。
    
    rrIgnore:忽略错误。
    }

    OnReconcileError原型:

    procedure OnReconcileError(
    DataSet: TCustomClientDataSet;
    E: EReconcileError; //Context错误堆栈信息,ErrorCode:DBExpress返回的错误码
    UpdateKind: TUpdateKind; //TUpdateKind = (ukModify, ukInsert, ukDelete);
    var Action: TReconcileAction//TReconcileAction = (raSkip, raAbort, raMerge, raCorrect, raCancel, raRefresh);
    );
    {
    raSkip:跳过错误记录并在Delta中保留本条记录。
    raAbort:停止操作并RollBack。
    raMerge:合并属性Data和Delta中的数据。
    raCorrect:已更正错误继续更新。
    raCancel:取消对错误记录的修改恢复原数据。
    raRefresh:取消错误记录的修改并以当前数据代替这个记录。
    }

    在处理错误时还可以通过以下属性获取错误字段的之前现在的值。

    Fields[Index].Value:当前修改后的值。

    Fields[Index].OldValue:修改之前的值。

    Fields[Index].NewValue:在错误处理过程中设置的新值。

    Fields[Index].CurValue:在数据源中的值。

    当更新数据出现错误时可以非常灵活的处理既可以让程序自己处理或不做处理,还可以返回错误信息和数据让用户自己处理。

  • 相关阅读:
    程序员找工作必备 PHP 基础面试题 (四)
    Laravel 教程:使用Fast Excel解决导出超大 XLSX 文件(千万级)带来的内存问题
    ThinkPHP无限分类的使用
    PHP 的 interface 有什么用处?
    编写可读代码:通过提前返回来减少缩进
    调试事件的派发
    调试对象的构建
    [反汇编分析] 局部变量复用
    [IDA]批量载入结构体
    [反汇编分析]调用函数传入参数不一致时可能寄存器传入参数
  • 原文地址:https://www.cnblogs.com/sun998/p/6533641.html
Copyright © 2011-2022 走看看