function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;
可區分「單一欄位查詢」與「多欄位查詢」


單一欄位查詢
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])


單一欄位查詢  (因有使用 VarArrayOf() 所以記得要 Uses Variants;)
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);

 1、使用“;”来分割多个字段名称,用VarArrayOf()来传递多个定位值。
 2、字段一定要和数据库完全一样,即使你用习惯了的空格也不行。虽然使得程序看起来跟清楚点,但是Locate不会自己做Trim,所以它把空格也当成字段名称的一部分。
 3、因为定位值采用Variants,所以定位就不知局限于字符串了。
 4、对于多栏查询的结果,一定要所有栏位全部符和才可以,只要有一栏不符合,就会返回False。
 5.  最好不用对空值进行定位,会进行从头到尾的遍历,影响速度.

 


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 joomy 的頭像
    joomy

    呀米呀米 .....((((( O_O))))).....

    joomy 發表在 痞客邦 留言(0) 人氣()