• 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中Date日期字符串格式的各种转换
    Redis集群搭建与简单使用
    Java中的Redis应用
    java的linux命令
    Lucene全文检索引擎
    设置Xshell中支持中文
    Java并发Fork-Join框架原理解析
    java线程
    Django-路由层
    Django简介
  • 原文地址:https://www.cnblogs.com/carcode/p/1639210.html
Copyright © 2020-2023  润新知