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 示例程序。