首页 > 其他分享 >Delphi Locate函数[1] - 查询、定位

Delphi Locate函数[1] - 查询、定位

时间:2023-03-27 10:44:59浏览次数:37  
标签:Locate Delphi 查询 A1 大小写 查寻 ADOQuery1

 

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

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

原型:

1 function Locate(const KeyFields: stringconst 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  以部分字符串查寻数据(模糊查询)。
  • 原型:
    1 2 3 4 5 Unit   DB type   TLocateOption = (loCaseInsensitive, loPartialKey);   TLocateOptions = set of TLocateOption;  

单独使用:

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

一起使用:

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

示例:

1 2 3 4 5 6 7 8 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)功能。

 

作者有感:

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

标签:Locate,Delphi,查询,A1,大小写,查寻,ADOQuery1
From: https://www.cnblogs.com/cinemaparadiso/p/17260735.html

相关文章

  • [pymysql]查询基础
    importpymysql#获取连接conn=pymysql.connect(host='10.105.212.1',port=3306,user='root',password='DemoDemo',database='db',cha......
  • 3.26 地铁查询系统安卓端学习进度。
    学习了安卓Studio中如何连接mysql的数据库的知识,并正在学习如何查询Mysql数据库中的信息显示到app中去,目前为止还无法实现对数据库的查询功能。完成了对地铁查询系统主要......
  • 3.26web和android端地铁查询开发学习总结
    web端的思想在前面已经写了,Android端的思想跟web端差不多少,其中不一样的就是连接MySQL数据库,其要求的jar包是5版本左右的,而且还涉及到线程的问题,在连接MySQL的时候要另外启......
  • 媒体查询
    媒体查询媒体查询能使页面在不同在终端设备下达到不同的效果媒体查询根据设备的大小自动识别加载不同的样式设置meta标签使用设备的宽度作为视图宽度并禁止初始的缩放......
  • 3.26全部完成android和web端的地铁查询系统
    web端的思想在前面已经写了,Android端的思想跟web端差不多少,其中不一样的就是连接MySQL数据库,其要求的jar包是5版本左右的,而且还涉及到线程的问题,在连接MySQL的时候要另......
  • 配置文件 条件查询
    编写接口方法:Mapper**参数:所有查询条件**结果:List<Brand>2.编写SQL语句:SQL映射文件3.执行方法,测试方法一:步骤一:在BrandMapp......
  • delphi WriteFile
    WriteFile函数的第二个参数是一个指向要写入文件的数据的指针。因此,您可以使用任何指针类型作为第二个参数,包括指向动态数组的指针。但是,您需要确保指针指向的内存块具有......
  • delphi 改变输入法位置
    varcf:TCompositionForm;begincf.ptCurrentPos:=Point(500,10);ImmSetCompositionWindow(ImmGetContext(Handle),@cf);end;其他输入法测试是可以的,QQ五......
  • 人人开源-自定义分页查询
    1.新建dto类@DatapublicclassEntityimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateStringfindDate;privateI......
  • SQL - 子查询
             #单行子查询#1.查询工资大于149号员工工资的员工信息SELECTe.last_name,e.salaryFROMemployeeseWHEREe.salary>(SELE......