Locate可以将当前光标定位在符合条件的记录上,Locate的第一个参数是条件字段,第二个参数是条件
值,第三个参数指出在查找时是否考虑大小写,是否部分匹配。Locate可以设置多个条件,如下所示:
Table1.Locate('company;contact;phone',VarArrayOf(['Sight Diver','P ','408-431-1000']),[loPartialKey]);
又如:
参与第三个参数的介绍:
loCaseInsensitive : 忽略大小写
loPartialKey : 是否采用局部相同的找法。此时, 只要搜寻条件的字串相等於栏位内容的开头文字, 即使长度不等, 仍然可判定为相等.( 就好像 xBASE 的 set exact off 的情形 )
用以下的例子来说明比较容易懂. 假定 Table1 为 :
cu_no | cu_name |
AMKB | 王大同 |
ACJC | 金士钦 |
BDFD | 林火金 |
若 sTest 为 'AMKB':
Table1.Locate('cu_no', sTest, [])
==> 当然可以找到
若 sTest 为 'AC':
Table1.Locate('cu_no', sTest, [])
==> 找不到
Table1.Locate('cu_no', sTest, [loPartialKey])
==> 找到 'ACJC 金士钦 ' 这笔记录.
因为集合中有 loPartialKey 这个项目, 此时, 'AC' 相同於 'ACJC'
的开头两个字元, 即使两者长度不等, 也算找到.
若 sTest 为 'ac':
Table1.Locate('cu_no', sTest, [loPartialKey])
==> 找不到, 因为区分大小写之故, 所以 'AC' 虽开头相同於 'ACJC',
也不能算作符合条件.
Table1.Locate('cu_no', sTest, [loCaseInsensitive, loPartialKey])
==> 找到 ACJC 金士钦 这笔记录.
此时不再区分大小写了. 可以顺利找到接近的资料.
简言之, Locate() 的第三引数如果是空集合, 那表示找到的资料必须大小写与资料长度均相等, 也就是完全相等的方式搜寻资料 ; 而集合中的元素, 视情况加入 loCaseInsensitive( 不区分大小写 ) . loPartialKey( 局部相等 ) 则提供了搜寻近似资料的弹性作法.
如果条件只有中文字呢? loCaseInsensitive 就没有什麽意义, 加与不加都不影响结果 ; 局部搜寻仍是有效的