5,928
社区成员




假设10000条数据
通过条件,ADOQuery1查询出来了500条,
ADOQuery2 我想在这个500条记录里继续查询。
if not uniquery1 eof
uniquery2.open
或者放在dbgrid里面
然后用dbgrid.datasource.dataset
while not (RzDBGrid1.DataSource.DataSet.Eof) do
begin
STR1:=RzDBGrid1.Fields[0].Value;
str2:=RzDBGrid1.Fields[1].Value;
UniQuery5.Close;
UniQuery5.ParamByName('Ps').AsString:=str1;
UniQuery5.ParamByName('Pe').AsString:=str2;
UniQuery5.Open;
if UniQuery5.RecordCount>0 then
begin
CheckListBox3.Items.Add(str3+'--'+STR1+'--'+str2+'--'+str4);
end;
RzDBGrid1.DataSource.DataSet.Next;
end;
l例如这种不知道是不是这个样子
ADOQuery1查询出来了500条,然后设置ADOQuery1的filter,过滤出来你要的数据,ADOQuery2 不需要了
ado处理这种情况有点勉强,把查询结果存到临时表再查询也可以。
哪吒总玩D7+数据库,是太乙老师的任务吗~
Filter
2不能用1来查询(使用SQL语法方式)。
但你这个,也确实就是SQL的嵌套查询。
例子:SELECT * FROM 表 WHERE 字段 > (嵌套的select语句);
应该不行,但是可以在查询中使用嵌套select,或者设置数据集(query也是数据集的一种)的filter,filter也支持各种条件组合,但是没有select的where子句那么强大,一般够用。