为什么ADOTable的IndexName的属性可以选择索引,但运行的时候却不接受索引? 请教专家们! (200分)

  • 主题发起人 主题发起人 sercall
  • 开始时间 开始时间
S

sercall

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADOTable连接SQL SERVER数据,
ADOTable 有一 IndexFieldName 属性,可以选择已定义的索引(PartNo).

然后在Delphi5中到请查找一记录:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.IndexFieldName := 'PartNo';
ADOTable1.Seek('12345');
end;

在运行的时候, 点击Button1, 出现
"Current provider does not support the necessary interface for Index functionality"的错误信息.

请教各位! 谢谢!!
 
需要补充一下: ADOTable1已经OPEN;
 
跟了一下源码看不出来什么原因:(
用Locate吧:ADOTable1.Locate('PartNo', '12345', []);
 
问题应该在ADOTable1.IndexFieldName := 'PartNo';
试一下先close;
 
yangkee说得对,
先CLOSE, 再ADOTable1.IndexFieldName := 'PartNo'
发现,问题不在Index, 而在Seek.
我再做了一个测试:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Close;
ADOTable1.IndexName := 'PartNo';
ADOTable1.Open;
Label1.Caption := ADOTable1.IndexName;
ADOTable1.Seek('12345');
end;
运行后, Label1可以显示"PartNo"
然后在行ADOTable1.Seek('12345')时出现
"Current provider does not support the necessary interface for Index functionality"的错误信息.

是ADO根本没Seek, 还是Seek的用法错误.
有没有其他查找记录的方法?(最好不要用Select 方法)


 
ADO的Seek好象有问题,用locate吧
 
locate 太慢,
有没有用索引的查找?
 
将TableDirect 的属性改为False.
 
多人接受答案了。
 
后退
顶部