为何数据表格的记录指针不能往下移动? (100分)

  • 主题发起人 主题发起人 泰坦
  • 开始时间 开始时间

泰坦

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序如下:
query2.first;
while not query2.Eof do
begin
no:=query2.fieldbyname('no').asstring;
query1.first;
while not query1.Eof do
begin
linkno:=query1.fieldbyname('link').asstring;
if pos(no,linkno)>0 then
begin
found:=true;
query1.next;
end
else
query1.Next;
end;
query2.Next;
end;
在运行时我发现query2的记录指针只会在第一及第二个记录之间移动,在执
行完query2.next后 ,似乎query1.fist对query2也有影响,query2的记录指
针又被移回第一个记录,本人不知如何解决这种问题,请各位高手指教.





 
单步跟踪看看值的变化
 
看代码没问题,单步执行看看吧。
 
设置断点,单步执行,
 
是不是QUERY1所指的表和QUERY2的表相关联?从程序上看,应该没问题的,
要不你重新建表1,和表2吧。
 
确实如jobsxy所说query1和query2都是来源于同一个表的不同条件的查询,
怎样解决这个问题呢?
 
我认为也许可以加个书签试一试,应该会有一项不道的结果。
 
设一个临时表
 
把程序贴出来
 
估计就是 if pos(no,linkno)>0 then 这一句有问题。

请问 pos(no,linkno)中是否有其它查找或查询之类的语句。

如果是的话,就在pos(no,linkno)时也遍历了某个表了,当然有问题了!!!


 
好象应该是这样:
query2.first;
while not query2.Eof do begin
no:=query2.fieldbyname('no').asstring;
query1.first;
while not query1.Eof do begin
linkno:=query1.fieldbyname('link').asstring;
if pos(no,linkno)>0 then
begin
found:=true;
end
else
query1.Next;
end;
query2.Next;
end;
 
多人接受答案了。
 
后退
顶部