如何从ADOQuery的数据集中快速找到指定的值
2个回答
展开全部
ADOQuery->Open();
现在我想直接得到某列的值。
begin比如,name列里有一行的值是“张三”,那么我想得到这行的其他的值。
但是使用了之后都报错。
select * where name='张三'
如果用循环的话,我觉得效率比较低。
麻烦各位指点一下。
然后可以取各字段的值了。
你可以使用 ADOQuery.Locate('字段名','值',[参数{可以为空}])进行查找,如果查找成功,则返回true,否则返回false;
或者:也可以使用两个表,一个用于数据录入,另一个副本表用于查询
Recno := DataSet.RecNo; //记下进入时的记录号
if DataSet.Locate('fieldName',value,[]) then //查找
......//此处为你找到记录后的处理程序end;DataSet.RecNo := Recno; //还原记录指针到查询前的位置
好像Local可以定位。
注意事项:因为用Adoquery.Locate()查找记录会改变记录的指针,即:adoquery.Recno,如果你使用的是TDbEdit之类的控件刚才与AdoQuery绑定在一起时,TDbEdit会在查询的时候发生变化.你可以换成普通的TEdit控件,这样一来,查询的时候值就不会因指针变化与改变,在保存数据的时候,再想办法将TEdit中的值写入表中即可,
bcb内用“[]”是不对的。
就是因为数据量可能会比较大,所以使用这样的方法,可能会长时间占用SQL的资源。
所以就一次检索出 几W条,进行内存内查询对比。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
ADOQuery->Open();
现在我想直接得到某列的值。
begin比如,name列里有一行的值是“张三”,那么我想得到这行的其他的值。
但是使用了之后都报错。
select * where name='张三'
如果用循环的话,我觉得效率比较低。
麻烦各位指点一下。
然后可以取各字段的值了。
你可以使用 ADOQuery.Locate('字段名','值',[参数{可以为空}])进行查找,如果查找成功,则返回true,否则返回false;
或者:也可以使用两个表,一个用于数据录入,另一个副本表用于查询
Recno := DataSet.RecNo; //记下进入时的记录号
if DataSet.Locate('fieldName',value,[]) then //查找
......//此处为你找到记录后的处理程序end;DataSet.RecNo := Recno; //还原记录指针到查询前的位置
现在我想直接得到某列的值。
begin比如,name列里有一行的值是“张三”,那么我想得到这行的其他的值。
但是使用了之后都报错。
select * where name='张三'
如果用循环的话,我觉得效率比较低。
麻烦各位指点一下。
然后可以取各字段的值了。
你可以使用 ADOQuery.Locate('字段名','值',[参数{可以为空}])进行查找,如果查找成功,则返回true,否则返回false;
或者:也可以使用两个表,一个用于数据录入,另一个副本表用于查询
Recno := DataSet.RecNo; //记下进入时的记录号
if DataSet.Locate('fieldName',value,[]) then //查找
......//此处为你找到记录后的处理程序end;DataSet.RecNo := Recno; //还原记录指针到查询前的位置
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询