var
ID:string;
begin
      adoconnection1.Connected:=false;
      adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+edit4.Text +';Persist Security Info=True;User ID='+edit3.Text +';Initial Catalog='+edit2.Text+';Data Source='+edit5.Text ;
      try
        adoconnection1.Connected:=true;
      except
       Application.MessageBox('连接数据库失败!!','错误',MB_OK+MB_ICONERROR);
       exit;
      end;            ADOQuery1.Active:=false;
            adoquery1.SQL.Clear;
            adoquery1.SQL.Add('select * from TBL_ACCOUNT');
            adoquery1.open;
         while   not   Adoquery1.eof   do
                  begin    
                 adoquery1.First;
                   sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ;
                   adoquery1.next; 
                       memo1.lines.Add(ID);
                  end;
end;
表里明明有7条数据 可是执行结果怎么会一直重复第一条纪录呢

解决方案 »

  1.   

    var 
    ID:string; 
    begin 
          adoconnection1.Connected:=false; 
          adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+edit4.Text +';Persist Security Info=True;User ID='+edit3.Text +';Initial Catalog='+edit2.Text+';Data Source='+edit5.Text ; 
          try 
            adoconnection1.Connected:=true; 
          except 
          Application.MessageBox('连接数据库失败!!','错误',MB_OK+MB_ICONERROR); 
          exit; 
          end;             ADOQuery1.Active:=false; 
                adoquery1.SQL.Clear; 
                adoquery1.SQL.Add('select * from TBL_ACCOUNT'); 
                adoquery1.open; 
            while  not  Adoquery1.eof  do 
                      begin    
                    //adoquery1.First; 不要这个
                      sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ; 
                      adoquery1.next; 
                          memo1.lines.Add(ID); 
                      end; 
    end; 
      

  2.   

    adoquery1.First; 
    adoquery1.next;矛盾,adoquery1.first返回表首,然后next可不就是重复吗
      

  3.   

         adoquery1.First;    
         while  not  Adoquery1.eof  do 
         begin    
              sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ; 
              adoquery1.next; 
              memo1.lines.Add(ID); 
         end; 
      

  4.   

    var 
    ID:string; 
    begin 
          adoconnection1.Connected:=false; 
          adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+edit4.Text +';Persist Security Info=True;User ID='+edit3.Text +';Initial Catalog='+edit2.Text+';Data Source='+edit5.Text ; 
          try 
            adoconnection1.Connected:=true; 
          except 
          Application.MessageBox('连接数据库失败!!','错误',MB_OK+MB_ICONERROR); 
          exit; 
          end;             ADOQuery1.Active:=false; 
                adoquery1.SQL.Clear; 
                adoquery1.SQL.Add('select * from TBL_ACCOUNT'); 
                adoquery1.open; 
                adoquery1.First;
            while  not  Adoquery1.eof  do 
            begin    
                      //adoquery1.First; 
                      sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; 
                      memo1.lines.Add(ID);
                      adoquery1.next; 
                           
                      end; 
    end; 
      

  5.   

    把while语句中的 adoquery1.First; 去掉,你有这句话,每次循环记录跳到第二条以后,下轮循环又跳到第一条记录,这就是个死循环了,用while语句一定要小心的
      

  6.   

      while  not  Adoquery1.eof  do 
      begin    
        //adoquery1.First;这里去掉 
        sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ; 
        adoquery1.next; 
        memo1.lines.Add(ID); 
      end;
    查询的时候,没特殊需要,不用加First吧,默认就是first开始的。
    With DM.OraQuery1 do
    begin  
      Close;
      SQL.Text:='Select * From DAA01';
      Open;
      try
        while not eof do
        begin
          //
        end;
      except
        end;
    end;
      

  7.   

    Try
      with DM.OraQuery1 do
      begin
        Close;
        SQL.Text:='Select * From DM_JB';
        Open;
        while not Eof do
        begin
          cbxSJB.Items.Add(FieldByName('JB').AsString);
          Next;
        end;
      end;
    Except
      messagedlg('不能正确打开数据库!', mtinformation, [mbok], 0);
    End;
      

  8.   

        with Adoquery1 do
        begin
          if (not Eof) or (RecordCount>0) then
          begin
            First;
            while not Eof do
            begin
              sqltosql:= fieldbyname('FLD_LOGINID').asstring; ; 
              memo1.lines.Add(ID); 
              Next;
            end;
          end;
        end;
      

  9.   

    var 
    ID:string; 
    begin 
      adoconnection1.Connected:=false; 
      adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+edit4.Text +';Persist Security Info=True;User ID='+edit3.Text +';Initial Catalog='+edit2.Text+';Data Source='+edit5.Text ; 
      try 
        adoconnection1.Connected:=true; 
      except 
        Application.MessageBox('连接数据库失败!!','错误',MB_OK+MB_ICONERROR); 
        exit; 
      end;   with ADOQuery1 do
      begin
        Active:=false; 
        SQL.Clear; 
        SQL.Add('select * from TBL_ACCOUNT'); 
        open; 
        First;  //放到这里
      end;
      
      while  not  Adoquery1.eof  do 
      begin    
        //Adoquery1.First;   去掉
        sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ; 
        adoquery1.next; 
        memo1.lines.Add(ID); 
      end; 
    end; 
      

  10.   

            ADOQuery1.Active:=false; 
            adoquery1.SQL.Clear; 
            adoquery1.SQL.Add('select * from TBL_ACCOUNT'); 
            adoquery1.open; 
            adoquery1.First;
            while  not  Adoquery1.eof  do 
                      begin                     
                      ID:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ; 
                      memo1.lines.Add(ID);
                      adoquery1.next;  
                      end; 
      

  11.   

    把adoquery1.First; 拿到循环之外。
      

  12.   

    while  not  Adoquery1.eof  do 
    begin    
      adoquery1.First; 
      sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ; 
      adoquery1.next; 
      memo1.lines.Add(ID); 
    end;
    你把 adoquery1.First;放在while循环里当然会这样了。每次无论你怎么改变进入循环后都是会从第一个记录开始能部重复吗?
    把adoquery1.First;移到wile条件前面adoquery1.First;
    while  not  Adoquery1.eof  do 
    begin    
      sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; ; 
      adoquery1.next; 
      memo1.lines.Add(ID); 
    end;
      

  13.   

    修改 删除 举报 引用 回复   
     
     加为好友 
    发送私信 
    在线聊天
     simonhehe 
    猩猩无罪 
    等级:
     发表于:2008-06-30 09:23:444楼 得分:0 
    var 
    ID:string; 
    begin 
          adoconnection1.Connected:=false; 
          adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+edit4.Text +';Persist Security Info=True;User ID='+edit3.Text +';Initial Catalog='+edit2.Text+';Data Source='+edit5.Text ; 
          try 
            adoconnection1.Connected:=true; 
          except 
          Application.MessageBox('连接数据库失败!!','错误',MB_OK+MB_ICONERROR); 
          exit; 
          end;             ADOQuery1.Active:=false; 
                adoquery1.SQL.Clear; 
                adoquery1.SQL.Add('select * from TBL_ACCOUNT'); 
                adoquery1.open; 
                adoquery1.First; 
            while  not  Adoquery1.eof  do 
            begin    
                      //adoquery1.First; 
                      sqltosql:=adoquery1.fieldbyname('FLD_LOGINID').asstring; 
                      memo1.lines.Add(ID); 
                      adoquery1.next; 
                          
                      end; 
    end;