QDataSet 的 Locate 系列函数使用详解

QDataSet 增强了 TDataSet 的 Locate 功能,以方便大家使用。与 TDataSet 相比,QDataSet 提供的是一组 LocateXXX ,我们在此做一个介绍,首先来看一下函数声明:

    ///<summary>定位到下一条符合条件的记录</summary>
    ///<param name="KeyFields"> 要比较的字段列表,中间以","或";"分隔</param>
    ///<param name="KeyValues"> 要比较的字段的关键值列表</param>
    ///<param name="Options"> 定位的选项</param>
    ///<returns>成功,移动到指定的记录并返回True,否则,返回False</returns>
    function Locate(const KeyFields: string; const KeyValues: Variant;
      Options: TLocateOptions): Boolean; override;
    ///<summary>定位到下一条符合条件的记录</summary>
    ///<param name="KeyFields"> 要比较的字段列表,中间以","或";"分隔</param>
    ///<param name="KeyValues"> 要比较的字段的关键值列表</param>
    ///<param name="Options"> 定位的选项</param>
    ///<param name="ARestart"> 是否重新开始定位</param>
    ///<param name="AGoBack"> 是否往回查找</param>
    ///<returns>成功,移动到指定的记录并返回True,否则,返回False</returns>
    function LocateEx(const KeyFields: string; const KeyValues: Variant;
      Options: TLocateOptions; ARestart, AGoBack: Boolean): Boolean;
    ///<summary>定位到首条符合条件的记录</summary>
    ///<param name="KeyFields"> 要比较的字段列表,中间以","或";"分隔</param>
    ///<param name="KeyValues"> 要比较的字段的关键值列表</param>
    ///<param name="Options"> 定位的选项</param>
    ///<returns>成功,移动到指定的记录并返回True,否则,返回False</returns>
    function LocateFirst(const KeyFields: string; const KeyValues: Variant;
      Options: TLocateOptions): Boolean;
    ///<summary>定位到下一条符合条件的记录</summary>
    ///<param name="KeyFields"> 要比较的字段列表,中间以","或";"分隔</param>
    ///<param name="KeyValues"> 要比较的字段的关键值列表</param>
    ///<param name="Options"> 定位的选项</param>
    ///<returns>成功,移动到指定的记录并返回True,否则,返回False</returns>
    function LocateNext(const KeyFields: string; const KeyValues: Variant;
      Options: TLocateOptions): Boolean;
    ///<summary>定位到上一条符合条件的记录</summary>
    ///<param name="KeyFields"> 要比较的字段列表,中间以","或";"分隔</param>
    ///<param name="KeyValues"> 要比较的字段的关键值列表</param>
    ///<param name="Options"> 定位的选项</param>
    ///<returns>成功,移动到指定的记录并返回True,否则,返回False</returns>
    function LocatePrior(const KeyFields: string; const KeyValues: Variant;
      Options: TLocateOptions): Boolean;
    ///<summary>定位到最后一条符合条件的记录</summary>
    ///<param name="KeyFields"> 要比较的字段列表,中间以","或";"分隔</param>
    ///<param name="KeyValues"> 要比较的字段的关键值列表</param>
    ///<param name="Options"> 定位的选项</param>
    ///<returns>成功,移动到指定的记录并返回True,否则,返回False</returns>
    function LocateLast(const KeyFields: string; const KeyValues: Variant;
      Options: TLocateOptions): Boolean;

标准的 Locate 函数咱们就不加以缀述了,现在介绍下增强的函数:

  • LocateEx

这个函数加入了两个参数 ARestart 和 AGoback 参数。其中 ARestart 为 True 时,如果 AGoBack 为 True ,则从最后一条开始重新向前查找定位,如果 AGoBack 为 False,则从第一条开始重新向后定位。如果 ARestart 为 False,则 AGoBack 从上一条开始向前定位,否则从下一条开始向后定位。其实 LocateFirst / LocateNext / LocatePrior / LocateLast  不过是此函数的简单封装。

  • LocateFirst

等价于 LocateEx(KeyFields, KeyValues, Options, True, false)。

  • LocateNext

等价于 LocateEx(KeyFields, KeyValues, Options, false, false);

  • LocatePrior

等价于 LocateEx(KeyFields, KeyValues, Options, false, True);

  • LocateLast

等价于LocateEx(KeyFields, KeyValues, Options, True, True);

具体的函数的用法,我们可以参考 QDSLocate 示例程序。

分享到: