Delphi Locate函数[1] - 查询、定位
<p><strong><span style="font-size: 16px">Delphi TDataSet.Locate函数 - 查询、定位</span></strong></p><p><span style="font-size: 16px">使用ADO等数据控件的时候,经常会用到<strong> locate 函数</strong>,<strong>在结果数据集中查询和定位</strong>,下面介绍一下:</span></p>
<p><span style="font-size: 16px">原型:</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:delphi;gutter:true;">function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean;</pre>
</div>
<p><span style="font-size: 16px">Locate 方法的3个参数:</span></p>
<p><span style="font-size: 16px">1、KeyFields //字段名称。单一字段,直接传入字段名称。多个字段条件查寻,字段名称以分号分隔每一个字段名称,例如:‘A1;A2;A3’</span><br><span style="font-size: 16px">2、KeyValues //条件数值。类型 Variant,几乎可以代表任何的类型,可查整数、小数、字符串,或是布尔值的条件。同样,查寻一个条件数值,直接在参数位置传入。如果是以多个字段条件来查寻,</span></p>
<p><span style="font-size: 16px"> 那么开发人员必须建立一个Variant数组,然后在这个数组中的每一个元素中指定条件数值,再传递Variant数组到这个参数中。至于Variant数组则可以使用VarArrayOf方法,或是使用VarArrayCreate方法来建立</span></p>
<p><span style="font-size: 16px"> 例如:VarArrayOf( [ Name1,Name2 ] )</span></p>
<p><span style="font-size: 16px">3、TLocateOptions //查询选项标准。例如:不分大小写查寻字符串数据,或以部分字符串数值来查寻数据(模糊查询)。</span><span style="font-size: 16px">两个参数类型:</span></p>
<ul>
<li><span style="font-size: 16px"><strong>loCaseInsensitive 不区分大小写查寻数据; </strong></span></li>
<li><span style="font-size: 16px"><strong>loPartialKey 以部分字符串查寻数据(模糊查询)。</strong></span></li>
<li><span style="font-size: 16px"><span style="font-size: 16px">原型:</span></span>
<div class="cnblogs_Highlighter">
<pre class="brush:delphi;gutter:true;">Unit
DB
type
TLocateOption = (loCaseInsensitive, loPartialKey);
TLocateOptions = set of TLocateOption; </pre>
</div>
</li>
</ul>
<p><span style="font-size: 16px">单独使用:</span></p>
<ul>
<li><span style="font-size: 16px">[ loCaseInsensitive ] 不区分大小写,(关键字字段和关键字值的匹配不考虑大小写)</span></li>
<li><span style="font-size: 16px">[ loPartialKey ] 区分大小写,模糊查询数据(键值只能包含部分匹配的键值字段;例如,“HAM”会同时匹配“HAMM”和“HAMMER”)</span></li>
</ul>
<p><span style="font-size: 16px">一起使用:</span></p>
<ul>
<li><span style="font-size: 16px">[ loCaseInsensitive ,loPartialKey ] 不区分大小写,模糊查询数据</span></li>
</ul>
<p><span style="font-size: 16px">示例:</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:delphi;gutter:true;">Name1:= ADOQuery1.FieldbyName('A1').AsString;
Name2:= ADOQuery1.FieldbyName('A2').AsString;
ADOQuery1.Locate('A1', Name1, []); //精确查询
ADOQuery1.Locate('A1', Name1, );//模糊查询
ADOQuery1.Locate('A1', Name1, ); //模糊查询,不区分大小写
ADOQuery1.Locate('A1;A2', VarArrayOf(), []); //多个数据一起查询,精确匹配
ADOQuery1.Locate('A1;A2', VarArrayOf(), ); //多个数据一起查询,不区分大小写 精确匹配
ADOQuery1.Locate('A1;A2', VarArrayOf(), ); //多个数据一起查询,不区分大小写 模糊匹配
</pre>
</div>
<p> </p>
<p> </p>
<p><span style="font-size: 16px"><strong>返回值:</strong></span></p>
<p><span style="font-size: 16px"> Locate 方法的回传数值是布尔值,表示是否成功找到了要查寻的数据。找到,就回传True,否则就回传False。</span></p>
<p><span style="font-size: 16px"> 当成功地查寻到数据之后,它就会移动目前的记录位置到这个数据上,否则就会停留在Locate开始查寻之前的记录位置上。</span></p>
<p><span style="font-size: 16px"> 注意:查寻数据的结果是一条数据,如果想查寻符合条件的一群数据,需使用 过滤器(Filter)功能。</span><br><br></p>
<p> </p>
<p>作者有感:</p>
<p> 一个简单的查询/定位 函数 网络上文章参差不齐,误导了很多人,修改和优化多次,认真实践和研读才能领会。</p>
<p> </p>
<p> </p>
<p><span style="font-size: 14px; color: rgba(136, 136, 136, 1)">创建日期:2019.07.08 更新时间:2021.01.29 2021.02.22 2021.07.22</span></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!<br><br>
来源:https://www.cnblogs.com/guorongtao/p/11152323.html
頁:
[1]