使用模块级变量,将连接数据库的代码放在Class_Initialize()事件中,这样Dll内部的函数就可以直接访问这个变量

解决方案 »

  1.   

    模块级变量定义在dll中 还是在调用dll的程序中?
      

  2.   

    当然是定义在Dll中。
    如果外部程序需要访问这个变量,可以用Public来定义,还需要编写一些代码。
    如果只是Dll内部调用直接用Private来定义。
      

  3.   

    请问 Class_Initialize()的用法? 谢了!
      

  4.   

    类模块有两个事件:Initialize 和 Terminate。从类模块的“对象”下拉列表中,选择“类”。下拉出的“过程”列表将显示事件。使用New关键字创建类的实例时,首先触发Initialize事件。
      

  5.   

    原来是这样的。那什么时候激发terminate事件?一般用set objSome=nothing
    好像不会激发这个时间么!
      

  6.   

    hehe,你要问的问题是:能否让调用这个函数的时候都不用重新创建一个Connection对象吧?
    把你的objConn 定义为模块级别,这样就可以在模块内全局通用。
    方法是在模块的“通用”部分定义你的变量,也就是在所有函数之外,class程序的一开始部分。
    然后在类初始化的时候初始化它,或者在你的方法内部初始化,并用一个变量标记它是否已经初始化过。
    例如:
    Option Explicit'保持属性值的局部变量
    Private mvarDBConnectionString As String '局部复制
    Private objConn As ADODB.Connection
    Private objRecordSet As ADODB.Recordset
    Private Sub Class_Initialize()
      On Error Resume Next
        Set objConn = New ADODB.Connection
        Set objRecordSet = New ADODB.Recordset
      On Error GoTo 0
    End Sub
    然后在你需要的函数里面去连接数据库(别忘了用变量做一个状态记录)。这样只是在每次创建COM实例的时候才创建该对象,并不会因为创建COM实例之后每次调用方法就要创建该对象。