如何从ADOQuery的数据集中快速找到指定的值

zhgwbzhd 2011-05-15 07:18:28
我使用ADOQuery控件,进行了数据检索。

ADOQuery->Open();

现在我想直接得到某列的值。

比如,name列里有一行的值是“张三”,那么我想得到这行的其他的值。

好像Local可以定位。
但是使用了之后都报错。

如果用循环的话,我觉得效率比较低。

麻烦各位指点一下。

...全文
287 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CsharpGame 2011-05-17
  • 打赏
  • 举报
回复
先用local定位到这条记录,再用filedByname("字段名")获取或更改字段的值!
我不懂电脑 2011-05-16
  • 打赏
  • 举报
回复
你可以使用 ADOQuery.Locate('字段名','值',[参数{可以为空}])进行查找,如果查找成功,则返回true,否则返回false;

注意事项:因为用Adoquery.Locate()查找记录会改变记录的指针,即:adoquery.Recno,如果你使用的是TDbEdit之类的控件刚才与AdoQuery绑定在一起时,TDbEdit会在查询的时候发生变化.你可以换成普通的TEdit控件,这样一来,查询的时候值就不会因指针变化与改变,在保存数据的时候,再想办法将TEdit中的值写入表中即可,
或者:也可以使用两个表,一个用于数据录入,另一个副本表用于查询

Recno := DataSet.RecNo; //记下进入时的记录号
if DataSet.Locate('fieldName',value,[]) then //查找
begin
......//此处为你找到记录后的处理程序
end;
DataSet.RecNo := Recno; //还原记录指针到查询前的位置
jamesyue2008 2011-05-16
  • 打赏
  • 举报
回复
用查询。
select * where name='张三'
然后可以取各字段的值了。
cmf41013 2011-05-16
  • 打赏
  • 举报
回复
Local抱什么错?
zhgwbzhd 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jamesyue2008 的回复:]
用查询。
select * where name='张三'
然后可以取各字段的值了。
[/Quote]

就是因为数据量可能会比较大,所以使用这样的方法,可能会长时间占用SQL的资源。
所以就一次检索出 几W条,进行内存内查询对比。
zhgwbzhd 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 songhtao 的回复:]
你可以使用 ADOQuery.Locate('字段名','值',[参数{可以为空}])进行查找,如果查找成功,则返回true,否则返回false;

注意事项:因为用Adoquery.Locate()查找记录会改变记录的指针,即:adoquery.Recno,如果你使用的是TDbEdit之类的控件刚才与AdoQuery绑定在一起时,TDbEdit会在查询的时候发生变化.你可以换成普通的TEdi……
[/Quote]

哥们,你的这个语法是??

bcb内用“[]”是不对的。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧