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;
  • 相关阅读:
    抽象类的练习
    Java异常处理1
    接口的应用
    接口之代理模式
    接口之工厂方法的设计模式
    给ubuntu系统换新装
    2的幂次方表示(OJ 8758)
    Fibonacci【矩阵乘法】(POJ 3070)
    斐波那契公约数(luogu 1306)
    枪战Maf (bzoj 1124)
  • 原文地址:https://www.cnblogs.com/LceMeaning/p/3090894.html
Copyright © 2011-2022 走看看