其中cn是连接数据库
那个rs是rs.open "select * from TableName",cn请问:如何知道记录集rs现在处于第几条记录?
请教请教!

解决方案 »

  1.   

    一般是通过计数的,例如
    rs.movefirst
    i=1
    while not rs.eof
       rs.movenext
       i=i+1
    Wend
      

  2.   

    不知对不对:
    rs.AbsolutePosition
      

  3.   

    rs.AbsolutePosition 或rs.book
      

  4.   

    AbsolutePosition 属性(远程数据)
          返回或设置 rdoResultset 对象的当前行的绝对行号。语法object.AbsolutePosition [= value]AbsolutePosition 属性的语法包含下面部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的一个对象。 
    value 长数据类型值,其范围从 -1 到 rdoResultset 中的最大行号 。与由 object 指定的 rdoResultset 中的当前行的顺序位置对应。缺省值是 -1。 
    说明使用 AbsolutePosition 属性将当前行指针定位到一个特定行,该行以其在 rdoResultset 中的有序位置为准,rdoResultset 为键集类型,或静态类型。不支持动态类型或仅向前类型的 rdoResultset 对象。当为动态游标返回一个值时,该值不必很准确。一般来说,在支持 AbsolutePosition 值之前,rdoResultset 对象的 Bookable 属性必须为 True 。也可以通过检查 AbsolutePosition 属性的设置值,确定当前行号。例如,在 50 行的 rdoResultset 中移动了 10 行, AbsolutePosition 属性返回 10 。对该结果集执行 MoveLast 方法后, AbsolutePosition 返回 50。 然后设置 AbsolutePosition 属性为 1 和 50 之间的任意值,将当前行指针定位到那行。AbsolutePosition 属性的值是基于 -1 ,因此,设置为1即是指 rdoResultset 中的第一行。如果设置一个大于移居行数的值,会造成 RDO 定位到结果集的最后一行 (EOF)。如果没有当前行,比如当 rdoResultset 中一行也没有时,就返回-1。如果当前行被删除, AbsolutePosition 属性值就没有定义,再引用该属性值会产生一个可以捕获的错误。如果游标的类型包括动态成员,将新行添加到序列的尾部。注意 该属性不是打算用来代替行号的。建议仍使用书签方法保留及返回游标给定的位置。而且,如果重新创建 rdoResultset,由于在执行过程中 rdoResultset 中各行的顺序和成员会发生变化,所以给定的行会有相同的绝对位置,因此也是不可靠的。
      

  5.   

    AbsolutePosition是否是正确的值要看游标类型,看看ADO的帮助就可以了
      

  6.   

    rx.movefisti=1;
    while <>eof
     rs.movenest 
    i=i+1
    loop
      

  7.   

    比较赞成使用自己计算;if not rs.eof then
       rs.movefirst
    else 
       exit sub
    end ifi=0while not rs.eof 
          i=i+1
          rs.movenext
    wend  
      

  8.   

    你在算什么,记录条数么?用rs.RecordCount不就行了么。或者用“select count(*) from tablename”也可以。不同的数据库引擎对于记录的存储方式不同,不同的查询方式得到的记录顺序也不同,你想知道目前处于哪条记录,读出来看看不就行了么。
      

  9.   

    rs.AbsolutePosition 不能总是保证返回正确地值。
    出于效率的考虑,记录不总是一次性的全部返回到记录集。
    连接,及记录集本身的属性设置都可能导致此类问题的发生。