Delphi TQuery 的Locate用法
Help里的解释
function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;
KeyFields: is a string containing a semicolon-delimited list of field names on which to search.
KeyValues: is a variant array containing the values to match in the key fields.
TLocateOptions is a set that optionally specifies additional search latitude when searching on string fields.
关于LocateOptions
type
TLocateOption = (loCaseInsensitive, loPartialKey);
TLocateOptions = setof TLocateOption;
loCaseInsensitive Key fields and key values are matched without regard to case.//忽略大小写
loPartialKey Key values can include only part of the matching key field value; //只需部分匹配,从头开始匹配
{另外,如果KeyFields里没有字符串类型或者LocateOptions=[],该函数都会忽略此项}
看了这么多,到底Locate是干么的呢?请看
Searches the dataset for a specified record and makes that record the current record.
Call Locate to search a dataset for a specific record and position the cursor on it.
很显然Locate有别于过虑,可不要等同起来哦。Locate主要是在已经Open出来的数据集里定位你要的资料。
好了,看了Help里面密密麻麻的E文,头都晕了,是不是因为头晕所以一直学不好“英国历史(English)”呢?我怎么看E文都是这种感觉,还是中国的方块字看起来亲切舒服,^_^,扯远了,言归正传,看了理论的东西,我们来实践一下。
做事情总是从易处着手,写程序也不例外。我们先看看单栏的用法。
strCode:='Abc'
Tquery1.Locate('code',strcode,[loCaseInsensitive])
这样TQuery,就会将光标定位到code字段中等于Abc(abc,aBc,abC,....)的记录上。
不过,我们既然用来查询大部分情况下我们都是要模糊查询的,所以这样并不是我们要用的方法,我们只要稍微改下Option就OK了。
Tquery1.Locate('code',strcode,[loPartialKey])
这样找到的是这样的结果code中“包含”(是从头开始匹配而不是真正的包含)Abc(Abcddfe...,....)
当然也可以两个同时使用
Tquery1.Locate('code',strcode,[loCaseInsensitive,loPartialKey])
with CustTable do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);
1、使用“;”来分割多个字段名称,用VarArrayOf()来传递多个定位值。
2、字段一定要和数据库完全一样,即使你用习惯了的空格也不行。虽然使得程序看起来跟清楚点,但是Locate不会自己做Trim,所以它把空格也当成字段名称的一部分。
3、因为定位值采用Variants,所以定位就不知局限于字符串了。
4、对于多栏查询的结果,一定要所有栏位全部符和才可以,只要有一栏不符合,就会返回False。
5. 最好不用对空值进行定位,会进行从头到尾的遍历,影响速度.
Ok,关于Locate的用法就说到这里,写个小例子当作总结。
var
LocateSuccess: Boolean;
SearchOptions: TLocateOptions;
StrField,StrLocate:String;//字段名称,定位值
begin
SearchOptions := [loCasesensitive,loPartialKey];
LocateSuccess := CustTable.Locate(StrField,StrLocate, SearchOptions);
end;
Delphi TQuery 的Locate用法的更多相关文章
- Delphi中ClientDataSet的用法小结
Delphi中ClientDataSet的用法小结 TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的控件.该控件封装了对数据进 ...
- 转delphi中nil的用法
转自:http://blog.csdn.net/haiou327/article/details/6666124 delphi中nil的用法 和C++中的NULL一样的意思,指空值,它和0值不一样-- ...
- delphi字符串分隔函数用法实例
这篇文章主要介绍了delphi字符串分隔函数用法,通过自定义函数SeparateTerms2实现将字符串分割后存入字符串列表的功能,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了delphi ...
- delphi assigned函数的用法
if not Assigned(Modeless) then Assigned()什么意思! assigned 是用来判断某一指针(pointer)或过程引用是否为nil(空),如果为空则返回假(fa ...
- delphi中webbrowser的用法
WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForw ...
- Delphi 中 paramstr 的用法及参数意义
原型 function paramstr(i:index):string 对于任何application paramstr(0)都默认代表的是应用程序的绝对路径.那 ...
- Delphi OleVariant 类型的用法
因客户需求,对客户的指纹机与公司产品进行集成,需要对指纹机做接口的二次开发,郁闷的是产商只提供了VB和C的DEMO示例,没有Delphi的,公司没有VB,C的环境,不能打开这二种语言的示例,因为本公司 ...
- DELPHI中MessageBox的用法 (转)
MessageBox对话框 输入控件的 ImeName属性把输入法去掉就默认为英文输入了 MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容.信息提示图标,而且可以 ...
- DELPHI中MessageBox的用法
MessageBox对话框 输入控件的 ImeName属性把输入法去掉就默认为英文输入了 MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容.信息提示图标,而且可以 ...
随机推荐
- Linux入门:常用命令:查看硬盘、分区、CPU、内存信息
查看硬盘信息 $df -lh #查看所有硬盘的使用状 $du -sh /etc #查看etc目录大小 #获得文件大小很方便,主要是目录 外部系统挂载 $mount ...
- redis作为mysql的缓存服务器(读写分离)
转自:https://www.iyunv.com/thread-52670-1-1.html 一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据 ...
- RHEL7安装图像化桌面
RHEL7安装图像化桌面 作者:Eric 微信:loveoracle11g 在安装系统的时候选择的是默认的Minimal Install RHEL7系统安装完成开机启动后发现没有图形化 Linux系统 ...
- 分段覆盖率TPR
黑产监控中,需要尽可能做到尽可能少的误伤和尽可能准确地探测,可以选择“在FPR较低时的TPR加权平均值”作为平均指标. 根据混淆矩阵计算TPR(覆盖率)和FPR(打扰率): 覆盖率:TPR = TP ...
- JavaScript、CSS样式收集
JS集: //给from一个名字然后在JavaScript的地方就可以用form的名字来调用form表单里input元素的value属性可以得到值 var val=form_name.input_na ...
- http note
http 多媒体传输协议 HyperText Transfer Protocol 超文本传输协议 https Hyper Text Transfer Protocol over Secure Sock ...
- Linux图形操作与命令行
一.执行命令 通过shell 在哪里输入: 1. 字符界面 2. 终端模拟器程序,如gnome-terminal.konsole (最早的linux是没有图形界面的,只有tty,也就是字符终端.当有了 ...
- MySQL存储过程 事务transaction
MySQL 中,单个 Store Procedure(SP) 不是原子操作,而 Oracle 则是原子的.如下的存储过程,即使语句2 失败,语句 1 仍然会被 commit 到数据库中: create ...
- python脚本参数传递
环境:python 库:optparse 效果:python xxx.py -parameter1 参数1 -parameter2 参数2 .... 废话少说,直接上代码ok? xxx.py ...
- [ZJOI2015]诸神眷顾的幻想乡(广义后缀自动机)
/* 题目中的神仙性质真的是令人愉悦 因为我一眼看成了每个点的度数不超过二十, 心想这他喵的和字符串什么关系 统计树上不同子串个数, 按道理直接dfs n次把所有的串插到后缀自动机里就行了 但是我们发 ...