题目听起来似乎很饶口,呵呵。看我仔细道来:'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.RecordsetSet rs1 = New ADODB.Recordset
'打开记录集,假设rs1 not eof or bof
rs1.Open sql,Conn,........Set rs2 = rs1rs1.Close
'这时候我如果关闭rs1,那么我在使用rs2的时候也提示关闭Debug.print rs2(0)  '这句话肯定出错'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我的问题其实非常简单懂,就是如果把rs1的内容给rs2拷贝一份后关闭rs1而且可以不影响使用rs2?谢谢所有关注这个问题的朋友,谢谢能给我解答的各位高手!感谢你们!!!!

解决方案 »

  1.   

    不知道你想做什么  写个函数定义为热recordset
      

  2.   

    Private Sub Command1_Click()
    Dim rs As New ADODB.Recordset
    rs.Open "select * from [image] ", iConc, adOpenStatic, adLockReadOnly
    Dim rs1 As New ADODB.Recordset
    Set rs1 = rs.Clone
    For i = 0 To rs.Fields.Count - 1
        List1.AddItem rs.Fields(i).Name
    Next
    rs.Close
    Debug.Print rs1.Fields(0).Value
    End Sub
      

  3.   

    这样肯定不行,要用clone,
    set rst1=rst.clone  
    rst.Requery
    .....
      

  4.   

    你可以用Clone来做!
    Clone 方法
    从现有 Recordset 对象创建一个相同的 Recordset 对象。可选择指定该副本为只读。
    语法:
    Set rstDuplicate = rstOriginal.Clone (LockType)
    返回值:
    返回 Recordset 对象引用。
    参数:
    rstDuplicate 
    对象变量,指示要创建的 Recordset 对象副本。 
    rstOriginal 
    对象变量,指示要被复制的 Recordset 对象。 
    LockType 
    可选。LockTypeEnum 值,指定原 Recordset 的锁定类型或指定只读 Recordset。有效值为 adLockUnspecified 或 adLockReadOnly。 
    说明:
    使用 Clone 方法可创建多个相同的 Recordset 对象,这对于想要在给定的记录组中保留多个当前记录尤其有用。使用 Clone 方法比创建和打开与原对象定义相同的新 Recordset 对象更为有效。原 Recordset 的 Filter 属性(如果存在)将不被应用到副本。设置新 Recordset 的 Filter 属性以过滤结果。复制任何现有 Filter 值的最简单的方式就是对其直接赋值,例如:rsNew.Filter = rsOriginal.Filter将新创建副本的当前记录设置为首记录。不管游标类型如何,对一个 Recordset 对象所做的更改将在其所有副本中显示。但是在对原 Recordset 执行 Requery 后,副本将不再与原 Recordset 同步。
    '<<<注意你要的功能>>>
    关闭原 Recordset 时并不关闭其副本,而关闭副本也不会关闭原 Recordset 或任何其他副本。用户只能复制支持书签的 Recordset 对象。书签值是可交换的,也就是说,来自一个 Recordset 对象的书签引用可引用其任何副本中的相同记录。一些触发的 Recordset 事件也将在所有 Recordset 副本中触发。但是,由于当前记录可区分副本的 Recordsets,因此事件对副本可能无效。 例如,如果更改了一个字段值,则 WillChangeField 事件将在更改的 Recordset 中和所有副本中发生。副本的 Recordset(此处没有更改)的 WillChangeField 事件的 Fields 参数只是简单地引用该副本当前记录的字段,该记录可能与原 Recordset (此处有更改)的当前记录不同。
      

  5.   

    来晚了。扑通下。。
    使用Clone
      

  6.   

    一般来说,将数据付给一个结构数组就ok了。i=0
    do while not rs.eof
        a(i).name=rs!name
        a(i).money=rs!money
        i=i+1
        rs.movenext
    loop
      

  7.   

    用Clone可能是不行的,原源记录集关闭后,那个clone出来的好像了不能用了.我记得是这样的.
      

  8.   

    clone是可以的。我总用的。楼上出现的问题我没遇到过的。