一个关于ADOQuery的问题,在线急等

时间:2021-06-13 17:36:56
环境:
SQL SERVER 2000 
ADO 

表TABLE1,假设其中有10条记录

ID    NAME
1
2
3
4
5
6
7
8
9
10

我现在用一个ADOQUERY1和DBGRID1和该表连接,并在程序初始化时候在DBGRID里显示除了该十条记录,现在的问题是,当我用ID进行查询时如何才能使DBGRID的指针指在查到的记录上并且该十条记录还全部在显示。
假设我查找ID为5的记录,这个时候DBGRID里显示还是10条记录,但是指针(蓝色标志条)指在ID为5的记录上。

8 个解决方案

#1


在ADOQUERY1可以使用Locate()方法;

#2


同意楼上

#3


楼上说得对,locate是移动指针到匹配的记录上,不是筛选数据集。

#4


我也考虑使用LOCATE,可是觉得没有SQL语句来的更直观和快捷,除过这个方法还有没有别的方法?如果没有的话我马上JT(结贴)

#5


ADOQuery1->Locate("ID","5",TLocateOptions()<<loCaseInsensitive);

或者TLocateOptions()<<loPartialKey 不完全匹配

#6


還有Seek()方法,這種方法必須有索引,而且只是對索引鍵進行查找,所以速度很快,但是並不是所有數據庫都支持Seek()方法,幫助里是這樣說的:
The VCL Seek method is a direct implementation of the Seek method for the ADO Recordset object. At the time of this writing, this method is only supported for use with Microsoft Access2000 and the Jet 4 provider

#7


我开始一直在想是否可以采用两个QUERY,用一个QUERY想法返回一个该记录在数据库中的物理位置,然后用moveby或者gotobookmark一类的实现,可怎么样也实现不了,大家能不能在这个方面再想想看有什么方法没有?

#8


下午3点前JT。

#1


在ADOQUERY1可以使用Locate()方法;

#2


同意楼上

#3


楼上说得对,locate是移动指针到匹配的记录上,不是筛选数据集。

#4


我也考虑使用LOCATE,可是觉得没有SQL语句来的更直观和快捷,除过这个方法还有没有别的方法?如果没有的话我马上JT(结贴)

#5


ADOQuery1->Locate("ID","5",TLocateOptions()<<loCaseInsensitive);

或者TLocateOptions()<<loPartialKey 不完全匹配

#6


還有Seek()方法,這種方法必須有索引,而且只是對索引鍵進行查找,所以速度很快,但是並不是所有數據庫都支持Seek()方法,幫助里是這樣說的:
The VCL Seek method is a direct implementation of the Seek method for the ADO Recordset object. At the time of this writing, this method is only supported for use with Microsoft Access2000 and the Jet 4 provider

#7


我开始一直在想是否可以采用两个QUERY,用一个QUERY想法返回一个该记录在数据库中的物理位置,然后用moveby或者gotobookmark一类的实现,可怎么样也实现不了,大家能不能在这个方面再想想看有什么方法没有?

#8


下午3点前JT。