大家好,我在activx DLL 的一个类模块中中引用adoconnection,但每创建一个新的对象时出现“atomation error coninitialize has not been called "的错误,请教这是什么原因引起的,谢谢!程序如下:
Public ObjConn As ADODB.Connection
Public ObjRecordset As ADODB.Recordset
Public DataConnection As New ADODB.Connection
'连接数据库
Public Function openconnection() As ADODB.Connection
  'On Error Resume Next
  'Dim ObjConn As ADODB.Connection
  On Error GoTo err1
    If ObjConn Is Nothing Then
        
        Set ObjConn = New ADODB.Connection  '出现错误
        ObjConn.ConnectionString = "Provider=SQLOLEDB.1;Password=; _
                                Persist Security Info=True;User  _
                               ID=;Initial Catalog=SMS;Data _ 
                                  Source=10.50.0.231"
        ObjConn.Open
    End If
    Set openconnection = ObjConn
    Exit Function
err1:
   MsgBox "desc:" & err.Description & "help" & err.HelpFile
End Function
'增加记录
Public Function InsertData(SqlSt As String) As Boolean
   Dim InsertRS As New ADODB.Recordset
   'On Error GoTo err
   'Set InsertRS = New ADODB.Recordset
   'If DataConnection.state = 0 Then
    
      Set DataConnection = openconnection
   'End If
   
   InsertRS.ActiveConnection = DataConnection
   
   'InsertRS.DataSource = SqlSt
   InsertRS.Open SqlSt, , , adLockOptimistic
   InsertData = True
   Set InsertRS = Nothing
   Exit Function
'err:
  'Set InsertRS = Nothing
  'InsertData = False
End Function'查询
Public Function QueryData(SqlSt As String) As ADODB.Recordset
  
   On Error GoTo err
   Set QueryData = New ADODB.Recordset
   If DataConnection.state = 0 Then
      DataConnection = openconnection
   End If
   QueryData.ActiveConnection = DataConnection
   QueryData.Source = SqlSt
   QueryData.Open , , adOpenStatic, adLockReadOnly
   Exit Function
err:End Function

解决方案 »

  1.   

    我曾经这样写过
    Public Sub Connect_Database()
    On Error GoTo Sub_Err
        Dim CnnStr As String
        If Rs.State <> 0 Then
            Rs.Close
        End If
        If Cnn.State <> 0 Then
            Cnn.Close
        End If
        CnnStr = "DSN=JDC_DATA_SOURCE;UID=SA;PWD="
        Set Cnn = New ADODB.Connection
        Cnn.Open (CnnStr)
    Sub_Exit:
        Exit Sub
    Sub_Err:
        MsgBox Err.Description
        Resume Sub_Exit
    End Sub
      

  2.   

    将两句合并为一句:Dim objConn as new ADODB.Connecion试试。
      

  3.   

    从“Set ObjConn = New ADODB.Connection  '出现错误”可以见得,
    你真的没有加入ADO
    教你:
    点击“工种”-->“引用”
    选择“Microsoft ActiveX Data Objects 2.5 Library”或者“Microsoft ActiveX Data Objects 2.6 Library”
      

  4.   

    to  alicky(周松):
    谢谢你,
    我已经在加入“Microsoft ActiveX Data Objects 2.5 Library”而且在不用
    线程调用的情况下,程序可以正常运行。请继续指教!!