我写的com组件代码如下'数据库连接接口
Private conn As New ADODB.Connection'数据库连接字符串
Private ConnectionString As String'模块名称常量
Const m_modName = "abc.DB"Public Function CreateConn(ByVal strCon As String) As ADODB.Connection
    '*****************************************************
    '*函数名称:CreateConn()
    '*功能描述:
    '*    创建连接adodb.connection连接
    '*参数列表:
    '*    strCon-----数据库连接字符串
    '*
    '*
    '******************************************************
    Dim objContext As ObjectContext
    Dim str_Con As String
    str_Con = strCon
    On Error GoTo errHandler
    
    
    Set conn = GetObjectContext.CreateInstance("ADODB.Connection") 
    
    Set objContext = GetObjectContext()
       
    conn.Open str_Con
    
    Set CreateConn = conn
    objContext.SetComplete
errHandler:
    objContext.SetAbort
End Function
编译以后,注册
然后调用代码如下,在执行tmp.CreateConn的时候提示run-time error '5':无效的过程调用或参数,请问时哪里错误    Dim tmp As abc.DB
    set tmp=New abc.DB
    tmp.CreateConn "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=server1"

解决方案 »

  1.   

    试试
    objConn=tmp.CreateConn("....")
      

  2.   

    漏了个set
    set objConn=tmp.CreateConn("....")
      

  3.   

    你的错误我这里没有出现
    我出现的是实时错误91,with变量未设置改进了一下'数据库连接接口
    Private conn As ADODB.Connection'数据库连接字符串
    Private ConnectionString As String'模块名称常量
    Const m_modName = "abc.DB"Public Function CreateConn(ByVal strCon As String) As ADODB.Connection
        Dim str_Con As String
        str_Con = strCon
        On Error GoTo errHandler
        
        Dim objContext As ObjectContext
        Set objContext = GetObjectContext()
        
        Set conn = New ADODB.Connection    'Set conn = GetObjectContext.CreateInstance("ADODB.Connection")
        conn.Open str_Con
        
        Set CreateConn = conn
        
        If Not objContext Is Nothing Then
            objContext.SetComplete
        End If
        Exit Function
    errHandler:
        If Not objContext Is Nothing Then
            objContext.SetAbort
        End If    
    End Function
      

  4.   

    Dim objContext As ObjectContext
        Set objContext = GetObjectContext()能不能介绍一下 ObjectContext和GetObjectContext的使用,
    谢谢!!
      

  5.   

    楼主,忘了说
    你需要将dll注册到com+组件服务器中
    才能激活com+的代码
    如objContext.SetComplete
        objContext.SetAbort