用了一个TDBGrid:DBGrid1,
和一个TADOQuery:ADOQuery1。举例查询的结果如下:Name Class
------------------
aaaa 2
bbbb 1
cccc 3
dddd 1
eeee 2
ffff 1
......问题是:
若现在选定的是bbbb,如何才能得到下一条记录,该记录的Class与bbbb的Class相同??如:先得到dddd,再得到ffff,再......本人新手,对上面2个控件不熟悉,望各位老大给予帮助。谢谢!!!
和一个TADOQuery:ADOQuery1。举例查询的结果如下:Name Class
------------------
aaaa 2
bbbb 1
cccc 3
dddd 1
eeee 2
ffff 1
......问题是:
若现在选定的是bbbb,如何才能得到下一条记录,该记录的Class与bbbb的Class相同??如:先得到dddd,再得到ffff,再......本人新手,对上面2个控件不熟悉,望各位老大给予帮助。谢谢!!!
ADOQuery1.Filtered:=True;
ADOQuery1.FindNext;
关键是我不是要连续得到全部是class=1的,期间可能穿插class=2或者3的。
例如:对每一个对象的处理时间是不一样的,比如有些是1分钟,有些是5分钟,等等。现在teacher1选定的是bbbb,对bbbb进行处理,
在teacher1处理bbbb期间,teacher2又选定了aaaa,对aaaa进行处理;
在teacher1处理完bbbb之后要得到dddd,并对dddd处理;
在teacher1处理完dddd之后要得到ffff,并对ffff处理;
在teacher2处理完aaaa之后要得到eeee,并对eeee处理;
......即每一个teacher都只能处理与其第一个处理的对象同一个class的,直到该class全部处理完毕。不知道这样说的是不是很清楚??谢谢!
------------------------
aaaa 2 false
bbbb 1 false
cccc 3 false
dddd 1 false
eeee 2 false
ffff 1 false
......use Variants;//窗体首部use部分包含Variants var
CurClass:integer;如果是teacher1,则CurClass:=1;
如果是teacher2,则CurClass:=2; if ADOQuery1.Locate('class;done',VarArrayOf([CurClass,false]),[])
then
begin
开始处理语句;
处理完后把该条记录Done字段修改为True;
end;
ADOQuery1.Filter:='Class=i';
ADOQuery1.Filtered:=True;
ADOQuery1.FindNext;
不知道能不能实现你的要求?
例如以下处理顺序:
teacher1选定并处理bbbb....
teacher2选定并处理aaaa....(这时选定的是aaaa)
teacher2处理完aaaa,并设置Filter和用FineNext找到并处理eeee....(这时DBGrid会自动选定eeee)
teacher1处理完bbbb,这时当前选定是eeee,必须要还原选定项为bbbb后才能用Filter和FindNext来找到dddd,若不还原的话就找到的是ffff,而漏掉了dddd。所以上面的控制不是不可以实现,而是比较复杂。