• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

DelphiLocate函数[1]-查询、定位

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Delphi TDataSet.Locate函数 - 查询、定位

使用ADO等数据控件的时候,经常会用到 locate 函数在结果数据集中查询和定位,下面介绍一下:

原型:

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean;

Locate 方法的3个参数:

1、KeyFields //字段名称。单一字段,直接传入字段名称。多个字段条件查寻,字段名称以分号分隔每一个字段名称,例如:‘A1;A2;A3’
2、KeyValues  //条件数值。类型 Variant,几乎可以代表任何的类型,可查整数、小数、字符串,或是布尔值的条件。同样,查寻一个条件数值,直接在参数位置传入。如果是以多个字段条件来查寻,

  那么开发人员必须建立一个Variant数组,然后在这个数组中的每一个元素中指定条件数值,再传递Variant数组到这个参数中。至于Variant数组则可以使用VarArrayOf方法,或是使用VarArrayCreate方法来建立

  例如:VarArrayOf( [ Name1,Name2 ] )

3、TLocateOptions //查询选项标准。例如:不分大小写查寻字符串数据,或以部分字符串数值来查寻数据(模糊查询)。两个参数类型:

  • loCaseInsensitive  不区分大小写查寻数据; 
  • loPartialKey  以部分字符串查寻数据(模糊查询)。
  • 原型:
    Unit
      DB
    type
      TLocateOption = (loCaseInsensitive, loPartialKey);
      TLocateOptions = set of TLocateOption;  

单独使用:

  • [ loCaseInsensitive ]  不区分大小写,(关键字字段和关键字值的匹配不考虑大小写)
  • [ loPartialKey ]  区分大小写,模糊查询数据(键值只能包含部分匹配的键值字段;例如,“HAM”会同时匹配“HAMM”和“HAMMER”)

一起使用:

  • [ loCaseInsensitive ,loPartialKey ]  不区分大小写,模糊查询数据

示例:

Name1:= ADOQuery1.FieldbyName('A1').AsString;     
Name2:= ADOQuery1.FieldbyName('A2').AsString;         
ADOQuery1.Locate('A1', Name1, []);              //精确查询
ADOQuery1.Locate('A1', Name1, [loPartialKey]);  //模糊查询
ADOQuery1.Locate('A1', Name1, [loCaseInsensitive,loPartialKey]); //模糊查询,不区分大小写
ADOQuery1.Locate('A1;A2', VarArrayOf([Name1,Name2]), []);        //多个数据一起查询,精确匹配
ADOQuery1.Locate('A1;A2', VarArrayOf([Name1,Name2]), [loCaseInsensitive]); //多个数据一起查询,不区分大小写 精确匹配
ADOQuery1.Locate('A1;A2', VarArrayOf([Name1,Name2]), [loPartialKey,loCaseInsensitive]); //多个数据一起查询,不区分大小写 模糊匹配

 

 

返回值:

 Locate 方法的回传数值是布尔值,表示是否成功找到了要查寻的数据。找到,就回传True,否则就回传False。

 当成功地查寻到数据之后,它就会移动目前的记录位置到这个数据上,否则就会停留在Locate开始查寻之前的记录位置上。

 注意:查寻数据的结果是一条数据,如果想查寻符合条件的一群数据,需使用 过滤器(Filter)功能。

 

作者有感:

  一个简单的查询/定位 函数 网络上文章参差不齐,误导了很多人,修改和优化多次,认真实践和研读才能领会。

 

 

创建日期:2019.07.08  更新时间:2021.01.29  2021.02.22  2021.07.22

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi杀死进程发布时间:2022-07-18
下一篇:
4张图看懂delphi10生成ipa和在iPhone虚拟器上调试(教程)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap