vb中如何快速在某一记录上定位?如:tb1中公有13条记录,我想访问第7条,能否不用将记录一条条的移到7,而直接到第7条?(不要用检索主键ID的方法,因为ID可能不连续)。谢谢大家!

解决方案 »

  1.   

    Dim DBc As ADODB.Connection
      Set DBc = New ADODB.Connection
     DBc.ConnectionString = "Provider=Microsoft. ......Info=False"
     DBc.Open
     Dim DBr As New ADODB.Recordset
    DBr.Open "select * from  表名 ", DBc, adOpenStatic, adLockReadOnly, adCmdText
      
       DBr.Move 7
      
      MsgBox DBr.Fields("字段名")
    DBr.Close msgbox 显示
      

  2.   

    Move 方法
          移动 Recordset 对象中当前记录的位置。语法recordset.Move NumRecords, Start参数NumRecords    带符号长整型表达式,指定当前记录位置移动的记录数。Start    可选,字符串或变体型,用于计算书签。也可为下列 BookEnum 值之一:常量 说明 
    AdBookCurrent 默认。从当前记录开始。 
    AdBookFirst 从首记录开始。 
    AdBookLast 从尾记录开始。 
    说明所有 Recordset 对象都支持 Move 方法。如果 NumRecords 参数大于零,则当前记录位置将向前移动(向记录集的末尾)。如果 NumRecords 小于零,则当前记录位置向后移动(向记录集的开始)。如果 Move 调用将当前记录位置移动到首记录之前,则 ADO 将当前记录放置在记录集(BOF 为 True)的首记录之前。在 BOF 属性已经为 True 时试图向后移动将产生错误。如果 Move 调用将当前记录位置移动到尾记录之后,则 ADO 将当前记录放置在记录集(EOF 为 True)的尾记录之后。在 EOF 属性已经为 True 时试图向前移动将产生错误。从空的 Recordset 对象调用 Move 方法将产生错误。如果传送 Start 参数,则移动相对于该书签的记录(假定 Recordset 对象支持书签)。如果没有指定,则移动相对于当前记录。如果使用 CacheSize 属性在本地缓存来自提供者的记录,则在传送将当前记录位置移动到当前缓存的记录组之外的 NumRecords 参数时, ADO 将不得不从目标记录开始检索新的记录组。CacheSize 属性决定新检索记录组的大小,而目标记录是检索到的第一个记录。如果 Recordset 对象是仅向前的,则用户仍然可以传送小于零的 NumRecords 参数(只要目标在已缓存记录的当前集合中)。如果 Move 调用将当前记录位置移动到第一个已缓存记录的前一个记录,将产生错误。因此可使用记录缓存,它在支持仅向前滚动的提供者上支持完全滚动。由于缓存的记录将加载到内存,因此应避免不必要地缓存过多记录。即使仅向前 Recordset 对象支持这种方式的向后移动,在任何仅向前的 Recordset 对象上调用 MovePrevious 方法仍将产生错误。
      

  3.   

    对了
      如果第七条
       则是     .....
       
        dbr.Move 6
      ......
       记录集从 0 开始