IF DATASET.EOF=TRUE THEN SHOWMESSAGE('THE LAST RECORD')

解决方案 »

  1.   

    TABLE1.RecNo 是指当前记录号
      

  2.   

    bof最前
    eof最后
    recno记录号
      

  3.   

    TBDEDataSet.RecNo,在IsSepuenced为True时有效.
    TADOCustomDataset.RecNo,最好把CursorLocation设置为clUseClient.
    RecNo是从0开始的.
      

  4.   

    dataset.bof是否在最前面//boolean
    dataset.eof是否在最后面//boolean
    dataset.recno反回记录号//word
      

  5.   

    EOF已经结束了,我要的是最后一条有数据的记录。
    我用的是TQuery,但TABLE1.RecNo 总是-1,不好用。
      

  6.   

    if Query1.RecNo = Query.RecordCount then
    begin
      //
    end;
      

  7.   

    或者可以这样
    if Query1.Eof then
      Query1.Prior;
      

  8.   

    判断是否表尾:DATASET.EOF
    得到记录号:DATASET.RECNO
      

  9.   

    来晚了
    其实就是eof bof
    看看和文件的一样
      

  10.   

    那怎设置IsSepuenced为True有效?
      

  11.   

    with query do
      begin
        close;
        sql.clear;
        sql.add(select top 1 id from tablename order by name desc);
        open;
      end;
      

  12.   

    非常感谢大家的回答,但还没解决我的问题!
    可能我没描述清楚再述一边:
    我想判断TQuery是否已到最后一条有数据的记录(不是EOF的判断最后一条无数据的记录)!
    上面说的DATASET.RECNO,我得到的是-1,却不是记录号!
    解决问题者,马上给分!
      

  13.   

    最后一条有数据的记录,不是EOF的判断最后一条无数据的记录??????????
    你的数据表最后一条没有记录?
      

  14.   

    另外,如果不用TABLE,在执行查询后, SQl Server 返回一定的记录,这些记录显然是无法用记录号的形式返回的,只能得到-1。你可以用RecordSet的Next, previor,first 等来获取和使用记录号一样的功能。
      

  15.   

    RECONO本质上是物理记录号,所以PRADOX表可以正常使用RECNO,而SQL SERVER就不可以,
    可以使用键值来找:
    可使用类市函数来完成,随便写的,可能有错:
    var i,recnum : integer;
        key : string;
    begin
    i:=1;
    key:=fieldbyname('key').asstring;
    while not eof do
    begin
     if fieldbyname('key').astring=key then
    begin
     exit;
    end;
     inc(i,1);
     next;
    end;
    recnum:=i;
    end;
      

  16.   

    为什么没人说
    Query1.Last?
    这样就可以了!
      

  17.   

    哈哈
    RECNO是有时为-1
    但是你如果连上一个CLIENTDATASET,它一定会是正确的答案
     
    这样所有问题都解决了
    RECORDCOUNT=RECNO
    我这样做了 N多数据库类型通用
      

  18.   

    TDataSet.Eof
    abs(TDataSet.RecNo)
      

  19.   

    要想到最后一条记录,很简单啊,直接用
      数据集.Last 即可到达最后一条记录,至于上面给位说的数据集的RecNo是有条件的,有的数据库是不支持的,所以会返回-1.如果使用sql server做数据库的话,可以用TAdoDataSet作为数据集控件来使用,这样可以返回RecNo的值。
      

  20.   

    adoQuery1.RecNo = adoQuery1.RecordCount
      

  21.   

    if table1.eof then(是最后一条)