我写了个DLL,我的思路是这样。
因在DLL里很多都要操作数据库的,所以我想在登录系统时把Connection对象传递过去,同时在DLL里把Connection设成全局变量,希望能在整个DLL里调用Connection对象详细代码如下:(DLL里有一个模块,一个类模块)
   1.MOD_CONN  模块
Public RUSER As String
Public con As ADODB.Connection
Public Place As String              '地方
Public Business As String           '权限   2.Cls_awbnocheck  类模块
Option Explicit
Public Property Set Mcnnquery(ByVal conn As ADODB.Connection)
    Set con = conn
End Property Private Property Get Mcnnquery() As ADODB.Connection
    Set con = con
End Property Public Function SQLb(ByVal con As ADODB.Connection, ByVal CRUSER As String, ByVal Bus As String)
    '登录成功后传递相应参数
    RUSER = CRUSER
    Business = Bus
    Set Mcnnquery = con '设置cnnquery属性 End Function Public Function FEI(ByVal area As String, ByVal pyn As String, ByVal TBL As String) As Boolean
    '############################
    '名称: fei
    '用途:检查该日报表是否已确定
    '参数:area 报表部门  pyn 报表日期   tbl 表名
    '返回值:true  已确定  False  未确定
    '############################
    Set RS = New ADODB.Recordset
    RS.CursorType = adOpenKeyset
    RS.LockType = adLockOptimistic
    RS.Open "SELECT REBOK FROM  " & TBL & " WHERE AREA='" & Trim(area) & "' AND PYN='" & Format(pyn, "YYYY-MM-DD") & "'", con
    If Not RS.EOF Then
        If Trim(RS.Fields(0).Value) = "已确定" Then
            FEI = True
        Else
            FEI = False
        End If
    Else
        FEI = False
    End If
    RS.Close
    Set RS = Nothing
    
End Function
在登录成功后,传递相关变量     '登录成功后传递相应信息到 CBS
    Dim obj  As New CBS.CLS_CONN
    Call obj.SQLb(con, Ruser, CN, Trim(Business))
现在遇到的问题:(编译前运行完全通过)
1.执行 FEI 函数时,提示"对象关闭",我想这个对象指的是Connection对象吧。为什么会关闭?这样不能把Connection对象定义为全局变量吗?
2.不能修改 FEI 函数 ,  如:在 FEI 里增多一个参数 ByVal manage As String ,这样,在程序中引用时好象整个DLL都无效.如把增加的删除后又可以引用了。请教高手

解决方案 »

  1.   

    你可能把与数据库连接部分与访问部分分开,各做一DLL,在访问DLL中调用连接DLL就行了
      

  2.   

    程序已成形了,连接是在主程序里连接,我想连接成功后把Connection对象传给DLL并在DLL里设成全局变量来用.
      

  3.   

    你的问题应出在这儿:
    Public Property Set Mcnnquery(ByVal conn As ADODB.Connection)
    应为:
    Public Property Set Mcnnquery(ByRef conn As ADODB.Connection)
      

  4.   

    还有这儿:
    Public Function SQLb(ByVal con As ADODB.Connection, ByVal CRUSER As String, ByVal Bus As String)
    改为:
    Public Function SQLb(ByRef con As ADODB.Connection, ByVal CRUSER As String, ByVal Bus As String)