自定义函数的返回值如何能是一个连接对象呀?如何实现?
我想定义一个连接函数,返回值是一个连接对象,每次连接数据库是调用一次便可以产生一个对象,问题是如果实现函数的返回值是一个对象呀?能给几句代码提示一下吗?

解决方案 »

  1.   

    是不是这样?'注意“As ADODB.Connection”,这个说明了函数的返回值是一个connection对象Function m_conn() As ADODB.Connection
        Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
        conn.Open "driver={microsoft access driver (*.mdb)};dbq=" & App.Path & "\数据库.mdb"
        '返回连接对象,是一个已连接好数据库的对象
        m_conn = conn
    End FunctionFunction m_rs() As ADODB.Recordset
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        rs.Open "select * from 表"
        返回一个recordset对象
        m_rs = rs
    End Function
      

  2.   

    改进一下,将以下代码放到模块中,便可以在工程中随时随地使用。Public Function m_conn(dbname As String) As ADODB.Connection'dbname是一个传递过来的数据库地址的字符串。    Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
        
        '使用传过来的dbname打开连接
        conn.Open "driver={microsoft access driver (*.mdb)};dbq=" & dbname
        
        
        '返回连接对象,是一个已连接好数据库的对象
        m_conn = conn
    End Function
      

  3.   

    不好意思,打漏代码。正确的应该是:'以下代码放在模块中:Public Function m_conn(dbname As String) As ADODB.Connection'dbname是一个传递过来的数据库地址的字符串。    Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
        
        '使用传过来的dbname打开连接
        conn.Open "driver={microsoft access driver (*.mdb)};dbq=" & dbname
        
        
        '返回连接对象,是一个已连接好数据库的对象
        Set m_conn = conn
    End Function'以下是调用,例如F盘有个数据库db1.mdbDim conn As ADODB.Connection, dbname As String
    dbname = "f:\db1.mdb"
    '调用m_conn()后,conn就是一个已连接好的数据库连接对象
    Set conn = m_conn(dbname)
      

  4.   

    谢谢楼上老师:
    我想问一下,在函数中产生了一个对象,可是没有set .. = nothing,函数返回一个对象,是不是就存在两个连接对象呀?
    请再指教。
      

  5.   

    在函数中产生的变量、对象,除非没有定义为static(静态),则当函数执行完成后,函数内的变量、对象就会自动释放,因为这是需要时才自动开辟内存的原因。
    这也是函数、方法、自定义函数、自定义过程的好处。