try
     ADOQuery             := TADOQuery.Create(self);
     ADOQuery.Connection  := MainForm.ADOConnection1;
     with ADOQuery3 do begin
      if Active then Close;
      SQL.Clear;
      SQL.Add('select * from saying_list where begin_time=:begin_time and end_time=:end_time' );
      Parameters.ParamByName('begin_time').Value:=Items[i].SubItems.Strings[0];
      Parameters.ParamByName('end_time').Value:=Items[i].SubItems.Strings[1];
      open;
      if not isempty then  begin
                Recordshow.Lines[0]:='呼叫:'+ADOQuery3.FieldbyName('phonenum').AsString;
                Recordshow.Lines[1]:='用户名:'+ADOQuery3.FieldbyName('phonename').AsString;
                Recordshow.Lines[2]:='起始时间:'+ADOQuery3.FieldbyName('begin_time').AsString;
                Recordshow.Lines[3]:='结束时间:'+ADOQuery3.FieldbyName('end_time').AsString;
                Recordshow.Lines[4]:='通话时长:'+ADOQuery3.FieldbyName('factlong').AsString;      end;
    end;
    finally
    ADOQuery.Destroy;
    end;以上程序选出了一条指定记录,如何访问它的前一条或下一条呀,

解决方案 »

  1.   

    如果从表中返回1条记录  然后找表中相应记录的下一条  我一般先用数据集返回所有记录,然后用locate指定 再NEXT  (效率可能低些  继续关注学习)
      

  2.   

    ADOQuery.Next;
    然后重新取值就可以了!
      

  3.   

    试过了
    后面加上ADOQuery3.next
    但ADOQuery3.FieldbyName('phonenum').AsString还是上一条记录的值
      

  4.   

    你说的下一条应该是符合此范围的下一条,通常用adoquery.next;前一条用previou .
      

  5.   

    如果你确定 ADOQuery3  OPEN 以后只有1条记录  那好像就不应该存在NEXT的记录 因为返回的数据集中只有1条记录吧?
      

  6.   

    哦忘了说了,那段程序只能从表中返回1条记录
    那我驶时songyanbin的方法
      

  7.   

    var bm:TBookMark
    ......
    bm:=ADOQuery3.GetBookMark
    ADOQuery3.next