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 不完全匹配
或者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
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 不完全匹配
或者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
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。