我在模块中连接数据库,代码如下:
 
model模块中:Public conn As New ADODB.Connection
Sub Main()
    Dim connstr
    Set conn = New ADODB.Connection
    Set conn = CreateObject("ADODB.Connection")
    onnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\vb工程\xs.mdb;Persist Security Info=False"
    conn.Open connstr
End Subform窗体中:Public rs As New ADODB.Recordset
Private Sub Command1_Click()
   Set rs = conn.Execute("select * from class")
   MsgBox "数据库连接成功"
End Sub编译提示错误:对象关闭时,不允许操作
出错语句是:Set rs = conn.Execute("select * from class")请问高手,这是怎么回事?

解决方案 »

  1.   

    1。去掉 
    Set conn = CreateObject("ADODB.Connection")
    2。
    Public rs As New ADODB.Recordset
    Private Sub Command1_Click()
    if conn is nothing then main
    Set rs = conn.Execute("select * from class")
    MsgBox "数据库连接成功"
    End Sub
      

  2.   


    'model模块中:
    Public conn As New ADODB.Connection
    Sub Main()
        conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\vb工程\xs.mdb;Persist Security Info=False"
    End Sub
    'form窗体中:Public rs As New ADODB.Recordset
    Private Sub Command1_Click()
        If conn.State = 0 Then Main
        Set rs = conn.Execute("select * from class")
        MsgBox "数据库连接成功"
    End Sub
      

  3.   

    楼主竟然同时用了三种方法来创建conn对象啊!
      

  4.   

    貌似onnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\vb工程\xs.mdb;Persist Security Info=False"
    少了个字符“c”建议lz在vb开发环境选项+上强制变量声明。
      

  5.   

    另外,也建议1楼的意见:使用execute之前确定conn是否成功打开。
      

  6.   

    使用chinaboyzyq的方法通过,那么,请问
    If conn.State = 0 Then Main
    的具体含义是?为什么
    if conn is nothing then main
    就不行?
      

  7.   

    试一试这个:http://download.csdn.net/source/1498324
    funConnectDataBase:连接数据库,连接成功返回True,失败返回False。根据返回值你可以决定是否执行subExectue过程。
      

  8.   

    conn.state是连接状态,如果已经连接conn.state=1,否则conn.state=0
      

  9.   


    楼主对象重复定义了.......
    'Three times..
    Public conn As New ADODB.Connection
    .......
    Set conn = New ADODB.Connection
    Set conn = CreateObject("ADODB.Connection")
    变量名字也打错了,连接打开就错了。Dim connstr
    '....
    onnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\vb工程\xs.mdb;Persist Security Info=False"