TTable组件中Locate函数为何定位不了记录?(100分)

  • 主题发起人 主题发起人 georny
  • 开始时间 开始时间
G

georny

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的数据表中用Locate函数定位数据库中的一条记录,为何它找到的不是正确记录,而是与正确记录相似的
那条记录,比如我的数据表定义三个字段:姓名,课程,成绩
给出表为:
小明  计算机   78
小明  数学    90
小红  英语    90

用result:=locate('姓名;课程',varArray['小明','数学'],[]);
它将当前记录定位到“小明   计算机  78”这条记录。result的结果是true;
但用result:=locate('姓名;课程',varArray['小明','英语'],[]);则result的结果是false;

请问各位,这是怎么回事?与表有关吗?表没有建索引,用sql server建立。

 
需要有索引,把姓名和课程名一起作为主键或者唯一索引看看。
 
[]改为[loCaseInsensitive]试试
 
按李维那本书上所说,索引不是必要的,可能是你的最后搜索方式的参数不对。
 
试试:
procedure TForm1.LocateClick(Sender: TObject);
var
suc:boolean;
SearchOptions: TLocateOptions;
Begin
SearchOptions := [loCaseInsensitive];//[loPartialKey];
with Table1 do begin
suc:=locate('姓名;课程',VarArrayOf(['小明','数学']),SearchOptions);
.....
end;
end;
 
在这里我非常感谢各位对我的帮助,但是,我在Locate中加了参数不管是loPartialKey还是
loCaseInsensitive都不行,而且加了索引也没什么用。希望大家能再给点提示。非常感谢。[:(][:(][:(]
 
我给你的代码试过的,没问题的,为什么到你那就不行?
你能不能把你的代码贴出来?或寄给我给你试试。linsb3931@0451.com
 
如果你用ACCESS,LOCATE可能就有问题,这主要是ACCESS的字符型字段的原因,主要表现在中文
搜索不准确,但英文是准确的.
 
后退
顶部