我在程序里打开数据库后,把Connection传入DLL,但只能在一个过程里使用,其他地方就使用不了了,我要在整个DLL里都能用,包括DLL里的FORM,我该如何写这代码?Option Explicit
Public Mcnnquery As ADODB.Connection    '定义ADO连接对象
Public Mrsquery As ADODB.Recordset      '定义ADO记录对象Public Property Set Connquery(ByVal conn As ADODB.Connection)
'Private Property Set Connquery(ByVal Conn As ADODB.Connection)
    Set Mcnnquery = conn
End Property
Private Property Get Connquery() As ADODB.Connection
    Set Connquery = Mcnnquery
End Property
Private Property Set Rsquery(ByVal RS As ADODB.Recordset)
    Set Mrsquery = RS
End Property
Private Property Get Rsquery() As ADODB.Recordset
    Set Rsquery = Mrsquery
End Property
Public Sub DbToExcel(Strcnn As ADODB.Connection, Strrs As ADODB.Recordset)
    Dim i As Integer, j As Integer
'On Error GoTo Err
    Set Connquery = Strcnn '设置cnnquery属性
    Set Rsquery = Strrs   '设置rsquery属性
    For i = 1 To Rsquery.Fields.Count
        ObjRange.Cells(1, i) = Rsquery.Fields(i - 1).Name
    Next i
    For j = 1 To Rsquery.RecordCount
        For i = 0 To Rsquery.Fields.Count - 1
            ObjRange.Cells(j + 1, i + 1) = Rsquery.Fields(i).Value
        Next i
        Rsquery.MoveNext
    Next j
End SubPrivate Sub Command1_Click()
Dim DE As New ooo.Class2  
DE.DbToExcel con, Rs, "c:\tt.xls" 
End Sub传入后,只能在DbToExcel这个过程用,我要在整个DLL都能用,包括DLL里的FORM,这代码我该如何写?

解决方案 »

  1.   

    在通用模块中放置全局变量来记录Connection对象
      

  2.   

    我想导致在Form中不能使用的原因可能是你又把Class初始化了一遍,在这种情况下Connection将无法保持其连接
      

  3.   

    lilaclone(~~阿九~~) 你好,请问你所说的通用模块是不是 .bas 的模块?那怎样放置全局变量?"又把Class初始化了一遍" 
    我不明啊,在DbToExcel过程里可以用,就算是结尾位置都可以用但再新建一个过程就不能用了,如
    Function myDll()end Function在MYDLL这个过程里就不能用了你能解释详细点吗?谢谢了