2007年5月9日 星期三

Locate 用法的討論

TTable.Locate(const KeyFields:string; const KeyValues:Variant; Options:TLocateOptions): Boolean;
中的 TLocateOptions的
loCaseInsensitive 表示搜尋時忽略大小寫
loPartialKey 表示搜尋時只須開頭值吻合

用 Locate 方法找資料時, 可以選擇要或不要第三個參數
第三參數如果是空集合, 那表示找到的資料必須大小寫與資料長度均相等, 也就是完全相等的方式搜尋資料

ex:
假定 Table1 為
cu_no cu_name
AMKB 王大同
ACJC 金士欽
BDFD 林火金

1.若 sTest 為 'AMKB':
Table1.Locate('cu_no', sTest, []) ==> 當然可以找到

2.若 sTest 為 'AC':
Table1.Locate('cu_no', sTest, []) ==> 找不到
Table1.Locate('cu_no', sTest, [loPartialKey])
==> 找到 'ACJC 金士欽' 這筆記錄.
因為集合中有 loPartialKey 這個項目, 此時, 'AC' 相同於 'ACJC'
的開頭兩個字元, 即使兩者長度不等, 也算找到
3.若 sTest 為 'ac':
Table1.Locate('cu_no', sTest, [loPartialKey])
==> 找不到, 因為區分大小寫之故, 所以 'AC' 雖開頭相同於'ACJC',
也不能算作符合條件.
Table1.Locate('cu_no', sTest, [loCaseInsensitive, loPartialKey])
==> 找到 ACJC 金士欽 這筆記錄.
此時不再區分大小寫了. 可以順利找到接近的資料
4.Table1.Locate('cu_no;cu_name', VarArrayOf(['ac','金']), [loCaseInsensitive, loPartialKey])
==> 找到 ACJC 金士欽 這筆記錄.
1.搜尋值採用Variants,使得搜尋條件可指定不同的資料型態.
2.字串內指定多欄位,以分號隔離各項目.
3.利用VarArrayOf函數,傳入多個搜尋值.

沒有留言: