for i:=0 to adoQuery1.recordCount-1 do
begin
    ///做你想做的;
    adoquery1.next;
end;

解决方案 »

  1.   

    我用过for i:=0 to adoQuery1.recordCount-1 do
    但是报错,不要问我用这段代码打算做什么,我只是把我的问题描述清楚而已。
      

  2.   

    有可能是你的最后一条记录有问题(不正规或者是空记录),如果不是,不妨试一下moveby看怎么样!
      

  3.   

    加了adoquery1.first,记录没问题,我看过其他贴子,以为是ADO问题,但是我现在升级了ADO了还是这样。
      

  4.   

    为什么不试试把i从1开始记数呢?我猜测RecordCount是从1开始记数的,而不是0。
      

  5.   

    int i := 0; ????Delphi里面也可以用?
      

  6.   

    with query1 do
    begin
     close;
     sql.clear;
     sql.add('..');
     open;
     first;
     while not (query1.eof) do 
      begin 
       do...//做你的事;
       next;
      end;
    end;
      

  7.   

    是ADOQuery不是Query,还有,请回答实质问题好不好?拜托啦!
      

  8.   

    ADOQuery也和Query一样的用阿?
    应该不会的,我也用sybase,
    with ADQQuery1 do
    begin
     close;
     sql.clear;
     sql.add('..');
     open;
     first;
    while not (ADOQuery1.eof) do 
      begin 
       do...//做你的事;
       next;
      end;
    end;
    如果再有问题,请看看你的数据库
      

  9.   

    TO luzhou(卢周)  
      我用过for i:=0 to adoQuery1.recordCount-1 do
    但是报错,不要问我用这段代码打算做什么,我只是把我的问题描述清楚而已。
    在你用这段代码前,你先看一看你的adoquery1.first了没有;
    再者你也可以查一下,你是在那一句发出了错误,如果一切如你所说的话
    (就是先定位了,但是最后一条记录错误),你打开的库看一下,当前的指针所在的位置;
     
     
      

  10.   

    var
       i :integer;
    begin
       i := 0;
       adoquery1.Open;
       while not adoquery1.Eof do begin
          i := i+1;
          adoquery1.Next;
       end;
       Edit1.Text := IntToStr(i);
    end;我用上面的代码,测试了mssql server,没有问题的。
    你用ado连接sybase使用的ado 的oledb provider还是odbc?
      

  11.   

    一般情况下,如果是SQL的话,那么OPEN以后应该
    FIRST、LAST才能准确的定位,不然,它有可能连RECORDCOUNT也不能正确的表达出来
      

  12.   

    我用的是sybase 提供的ole db
      

  13.   

    DElphi的eof是纪录的最后一个,当你的程序执行到最后一条纪录时while not adoquery1.eof do时它就跳出了,所以是i = ADOQuery1.recordcount - 1;
      

  14.   

    你想做什麽?用for i:=0 to adoQuery1.recordCount-1 do应该不会出错!!