zoukankan      html  css  js  c++  java
  • 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;
    
    
  • 相关阅读:
    八月二十九学习报告
    文本操作
    EL表达式
    注解开发
    逆向
    内置对象和方法
    每日日报2020.11.10 1905
    每日日报2020.11.12 1905
    每日日报2020.11.17 1905
    每日日报2020.11.20 1905
  • 原文地址:https://www.cnblogs.com/carcode/p/1639210.html
Copyright © 2011-2022 走看看