ClientDataSet功能介绍
一、关于ado中替代findkey的方法:
在delphi 中使用findkey必须有索引才能使用,
在数据库中查找数据,有两种方式:一种是以数据表的关键字段或辅助索引字段为查询依据,这种方式查询的速度比较快,如GotoKey、FindKey方法;另一种是以任意字段或字段组合为查询依据,这种方式查询的范围比较广,如Locate、Lookup方法。具体应用的时候根据实际需要选择查询数据的方式。
1、GotoKey、FindKey方法
使用GotoKey、FindKey查询方法时,它们的查询对象必须是关键字段或辅助索引字段。(应该是非关键字段即可查询成功!)
这两种方法的思想是在指定的查询字段中寻找特定的数据值,如果找到了,就把指针指向该刻录,
进而可以访问该记录中的其他字段。GotoKey、FindKey方法进行的是精确查询,即记录的字段值
必须与给定值完全匹配,才算查询成功,否则查询失败。GotoKey、FindKey方法比较相信,
主要区别在于如何指定查找值。
GotoKey、FindKey的区别是:查找值要作为参数传递给FindKey方法,GotoKey不带参数。
它到查询缓冲区中获得查找值。
FindKey允许用户同时查找多个字段值,此时,必须把要查找的多个字段名赋值给
TTable组件的IndexFieldNames属性,用逗号隔开,然后把每个字段的查找值赋给FindKey的参数数组,
数组放在方括号中,参数值用逗号隔开。
另外,还可以利用GotoNearest和FindNearest方法进行不精确查询,即从数据库中查找出与给定值最
接近的匹配值,其特点是:查询不会失败,总是会查找出一个结果来,这个结果最接近用
户的需要。GotoNearest和FindNearest都返回一个逻辑类型的值以表明查询是否成功,
而实际上几乎都是成功的。GotoNearest的使用方法和GotoKey一样,FindNearest的使用方法和FindKey一样。
2、Locate、Lookup方法
使用Locate、Lookup方法查询数据库,查询对象可以是任意字段或字段组合,不一定要关键字段。这两种方法非常类似,主要区别是参数和返回值不同。
Locate方法用于在数据表中查询特定记录,并使之成为当前记录。其语法如下:
Function Locate ( const KeyFields:string; const KeyValues:Variant; Options:TLocateOptions):Boolean;
其中:
KeyFields用于指定查找字段名
KeyValues用于指定需要查找的字段值
Options用于设置查找选项
成功:返回True,查找到的记录作为当前记录
失败:返回False,指针位置不变。
Locate方法可以对指定的多个字段进行查询,KeyFields指定的字段越多,查询就越精确。如果KeyFields需要指定多个字段,则字段名用分号隔开,而由于字段的数据类型各不相同,所以KeyValue必须是一个可变类型的数组,例如:
flag := Table1.Locate(‘ID; Name’, varArrayOf([‘000001’, ‘张三’]), [loPartialKey]);
Lookup方法与Locate方法非常相似,不同的是,如果在数据表中找到匹配的记录,Lookup方法能返回该记录中若干字段的值。其语法如下:
Founction Lookup (const Keyfields: string; const KeyValues:Variant; const ResultFields:string;):Variant;
其中Keyfields参数和KeyValues参数的含义与Locate方法相同,第3个参数是ResultFields,用于指定要返回的字段,如果此参数指定了多个字段,则字段名用分号隔开。如果查询成功,Lookup返回一个可变类型的数组;如果查询不成功,Lookup返回一个空的数组。如:
results := Lookup(‘company; city’,varArrayOf([‘xinzhi’, ‘beijing’]), ‘company; addr1, addr2, state, zip’);

浙公网安备 33010602011771号