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;
    
    
  • 相关阅读:
    C# MATLAB混编(二)
    C# MATLAB混编(一)
    C#编程.循环的中断
    WPS 常用操作
    PowerDesigner 操作手册
    软件开发-零散问题
    代码优化
    layui 前端UI框架
    css 样式渲染
    linux 操作系统
  • 原文地址:https://www.cnblogs.com/carcode/p/1639210.html
Copyright © 2011-2022 走看看