if not Adoquery3.isEmpty then
       begin
        adoquery3.first;
        if Assigned(Adoquery3.findField('mscore')) then
         begin
           with Adoquery3 do while not eof do
           begin
             with    ? 1       do  while not eof do
              begin
                 with    ? 2   do   while not eof do
                   begin
                   end;
              end;
           end;
         end;一个连续的循环怎么表示第一个起点的下一个起点,即?1 是表示第一个循环起点的下一个,可以就认为是adoquery3.first-1,?2相当于是adoquery3.first-2。 问题是?1和?2怎么表示?
请强人们多多帮忙啊!

解决方案 »

  1.   

    while not adoQuery.eof do
    begin
      .....
      adoQuery.next;
    end;是这个意思吗?没有太明白你的文字描述
      

  2.   

    这样好像不行,adoquery.next应该是第一大循环里的adoquery循环到的那个行的下一个记录吧。我现在的难题就是adoquery找到的记录的第二行和第三行。整个循环想完成的任务就是想从找到的记录中按序无重复也不遗失任何一个搭配的三行数据,再对这三行数据进行处理。还请再多帮想想啊!其实问题很简单,就是怎么表示adoquery.first的下一个和下下一个。
      

  3.   

    应该是楼上的这个意思吧,少加了一个next
      

  4.   


    if not Adoquery3.isEmpty then 
          begin 
            adoquery3.first; 
            if Assigned(Adoquery3.findField('mscore')) then 
            begin 
              with Adoquery3 do while not eof do 
              begin 
                next ;   //   這個就是移動指針,指幾下一條記錄的
              end; 
            end;    用  Adoquery3.clone    復制一個相同數據集出來,通過 Adoquery3.locate  的字段業定位,這樣過濾
      

  5.   

    首先按你的需求排序
    然后adoquery.first是第一个,下一个下下一个可以用adoQuery.next取得 adoquery.MoveBy(Distance: Integer)就针对这三行数据进行处理?累加还是其他?
      

  6.   

    定位会有这么费劲? next, moveby, locate 都是干这事的
      

  7.   

    是呀,用Next应该就可以了呀,不过如果是在while-next内再加,记得也要用eof判断。
      

  8.   

    adoquery.maxrecords:=3;不过你的问题有些矛盾啊,“想从找到的记录中按序无重复也不遗失任何一个搭配的三行数据”如果你的数据库里有30行符合条件是否只取前三行?
    如果那样的话,设置maxrecords就可以了。
      

  9.   

    有没有好点的答案了?我就是想实现一个功能,从找到的数据库表格中的数据挑出三个就像从多少个球里随机挑选出三个而已,只是我这边要把所有的情况给列出来。通过三个循环,第一个循环是从第一个到倒数第三个,第二个循环是从第一个循环中的取值到倒数第二个,第三个循环是从第二个循环中的取值到最后一个。代码的大概意思就是这样:        if Assigned(Adoquery1.findField('cname')) then
            begin     
              with Adoquery1 do while eof do            //C
              begin       
              next;
                with adoquery1 do  while not eof do     //B
                  begin
                   next  
                    with adoquery1 do  while not eof do   //A
                      begin 
                       listbox1.items.add('abc'); 
                       next;
                         end;
                    end;
                end;
              end;只是我觉得当做完A循环后再做B循环,是不是adoquery1的记录已经因为A循环的进行已经到了最后一个了?怎样对B中本次循环的地址进行定位?可以使A循环结束后通过这个定位向后面递推一个。主要就是这个代码怎么写了,请高手们帮我把代码完善好后完整的发到贴上,实在感激不尽!  
      

  10.   

    假如有20个数,我且用C++的循环描述下。
    for(i=0;i<=18;i++)
    {
      for(j=i;j<=19;j++)
      {
        for(k=j;k<=20;k++)
        {
        }
       }
    }我要完善的代码是:
    if Assigned(Adoquery1.findField('cname')) then 
            begin    
              with Adoquery1 do while eof do            //A
              begin      
              next; 
                with adoquery1 do  while not eof do    //B 
                  begin 
                  next  
                    with adoquery1 do  while not eof do  //C 
                      begin 
                      listbox1.items.add('abc'); 
                      next; 
                        end; 
                    end; 
                end; 
              end; 其中C循环就相当于i循环,B循环相当于j循环,A循环相当于k循环。
    我的问题其实很简单:就是用while做这这个嵌套循环这个起点不会确定,比如C中是以B中adoquery1的位置为起点到最后的,那么C循环中如何定义这个起点?或许用for循环更看得清一点。我还是delphi初学者,有些东西还不懂,所以有些地方说不清也很不好说了.