1。窗口关闭后Recordset对象会不会自己关闭。
2。我在Unload事件中关闭Recordset对象,报错“424 要求对象”,为什么?
3。我在一个load事件中建立两个以上的Recordset对象,如adors1,adors2.....
后面一个会不会覆盖前一个对象

解决方案 »

  1.   

    Set recordset=nothing
    不会覆盖
      

  2.   

    1  VB中的对象在生命周期结束后,是会被系统踢出内存的,但是这样不好,你也不知道系统是否会少踢出哪个,应该对对象显式的set nothing
    2  报告错误的话,看看你的recordset得声明在哪里?会不会是unload已经超出了对象的声明区?
    3  对象是从类派生的adors1和adors2也许会共用某些资源,比如连接池之类的,但是它们并无直接相互关系。
      

  3.   

    1. Set recordset=nothing
    2  报告错误的话,看看你的recordset得声明在哪里?会不会是unload已经超出了对象的声明区
    3  后面一个会不会覆盖前一个对象
      

  4.   

    1. Set recordset=nothing
    2.是unload已经超出了对象的声明区
    3.后面一个会不会覆盖前一个对象
      

  5.   

    1.最好不要这样,这是一种妥当的做法,应该是Set recordset=nothing
    3.后面的一个不会覆盖前面的,他们之间没有什么关系。
      

  6.   

    同意。把recordset的声明放到form的声明区(不在任何过程内部)试试
      

  7.   

    在关闭窗口前运行,Set recordset=nothing。
    不会出现你说的覆盖。
      

  8.   

    谢谢各位回复。
    unload 中用Set adors4=nothing可以了,为什么close不行
    我把 Dim adoconn As ADODB.Connection
         Dim adors4 As ADODB.Recordset
         Set adoconn = New ADODB.Connection
         Set adors4 = New ADODB.Recordset
         sConnectionString = "Provider=MSDASQL.1;Password=8172045;Persist Security Info=True;User ID=sa;Data Source=jxgl;Mode=Read"
         adoconn.Open sConnectionString
    写在窗体的声明中,报SET错误,无效的外部过程,放在标准模块中也不行
    如何共用连接字符串
      

  9.   

    Dim adors4 As new ADODB.Recordset
      

  10.   

    在窗体的unload事件中写上: set 窗体名=nothing 即可