• ADO实现单条记录的刷新《转》


    如何有效刷新当前记录
    ADO的Recordset对象有一个Resync方法, 可以刷新不同范围的数据. 如果想刷新当前记录可以用如下的语句:
    var
        Rst: _Recordset;
    begin
        ...
        Rst.Resync(adAffectCurrent, adResyncAllValues);
        ...
    end;
    可惜delphi的TADODataSet没有封装这个功能. 如果要在TADODataSet刷新当前记录, 只有使用Requery方法重新执行SQL语句, 或使用Refresh方法. Requery重新执行, 记录指针放在第一条, 而不是当前记录. Refresh方法其实使用了Rst.Resync(adAffectAll, adResyncAllValues)来刷新, 效率奇慢. 
    因此, 写了段代码来刷新TADODataSet 的当前记录, 这段代码做成公共函数也可以做成TADODataSet子类的方法.
    procedure ADORefreshCurrent(DataSet: TADODataSet);
    begin
      with DataSet do
      begin
        CheckBrowseMode;
        UpdateCursorPos;
        try
          Recordset.Resync(adAffectCurrent, adResyncAllValues);
        finally
          Resync([]);
        end;
      end;
    end;
    
    procedure TXXXXDataSet.RefreshCurrent;
    begin
      CheckBrowseMode;
      UpdateCursorPos;
      try
        Recordset.Resync(adAffectCurrent, adResyncAllValues);
      finally
        Resync([]);
      end;
    end;
  • 相关阅读:
    面试题33:把数组排成最小的数
    面试题32:从1到n整数中1出现的次数
    面试题31:连续子数组的最大和
    HTTPS 及加密信息全解析
    面试题30:最小的k个数
    linux退出vi
    linux清除当前屏幕
    java web开发环境配置
    jQuery积累
    html5离线应用详摘
  • 原文地址:https://www.cnblogs.com/LceMeaning/p/3090894.html
Copyright © 2020-2023  润新知