好像是定义对象的时候没有用New的原因,记住:对象一定要实例化以后才能引用!

解决方案 »

  1.   

    to:两位大虾,我的vb代码和asp代码如下(组件时关于连接池的),帮偶看看吧!!
    vb代码:Option ExplicitPrivate maxConnections As Integer
    Private availableConnections As New Collection
    Private busyConnections As New Collection
    Private initialConnections As Integer
    Private pending As BooleanPrivate Function makeNewConnection() As ADODB.connection
        pending = True
        Dim connection As New ADODB.connection
        connection.ConnectionTimeout = 30
        connection.CommandTimeout = 60
        connection.ConnectionString = "PROVIDER=SQLOLEDB.1;DATA SOURCE=192.168.0.3;UID=sa;PWD=;DATABASE=newchina91"
        connection.Open
        pending = False
        makeNewConnection = connection
    End FunctionPublic Sub initIt(max As Integer, init As Integer)
        maxConnections = max
        If init > max Then init = max
        initialConnections = init
        Dim i As Integer
        For i = 1 To initialConnections
            availableConnections.Add makeNewConnection()
        Next
    End SubPublic Function getConnection() As ADODB.connection
        Dim connection As ADODB.connection
        
        If availableConnections.Count > 0 Then
        
            Set connection = availableConnections.Item(availableConnections.Count)
            availableConnections.Remove (availableConnections.Count)
            
            If connection.State = ADODB.adStateClosed Then
                getConnection = getConnection()
                Exit Function
            Else
                busyConnections.Add connection
                getConnection = connection
                Exit Function
            End If
            
        Else
            
            If (totalConnections() < maxConnections) And (Not pending) Then
                availableConnections.Add makeNewConnection()
                getConnection = getConnection()
                Exit Function
            Else
                getConnection = Null
            End If
            
        End If
    End FunctionPublic Sub freeConnection(connection As ADODB.connection)
        Dim i As Integer
        For i = 1 To busyConnections.Count
            If busyConnections.Item(i) = connection Then busyConnections.Remove (i)
        Next
        availableConnections.Add (connection)
    End SubPublic Function totalConnections() As Integer
        totalConnections = availableConnections.Count + busyConnections.Count
    End FunctionPrivate Sub Class_Initialize()
        maxConnections = 1
        initialConnections = 1
        pending = False
    End Sub
    ---------------------------
    asp中这样用:set mypool = Server.CreateObject("QxluoPool.ConnectionPool")mypool.initIt 20,1 ‘这一行就出错了!!!!!
    why?????
      

  2.   

    工程名:
    QxluoPool
    class module名:
    ConnectionPool!!
    谢谢!
      

  3.   

    makeNewConnection = connection錯
      

  4.   

    to:T2(無藥可救)
    什么地方错了,为什么错了,请指点!
      

  5.   

    Option ExplicitPrivate maxConnections As Integer
    Private availableConnections As New Collection
    Private busyConnections As New Collection
    Private initialConnections As Integer
    Private pending As Boolean
    Dim EADOConnection As New ADODB.connectionPrivate Function makeNewConnection() As String
        pending = True
        EADOConnection.ConnectionTimeout = 30
        EADOConnection.CommandTimeout = 60
        EADOConnection.ConnectionString = "PROVIDER=SQLOLEDB.1;DATA SOURCE=10.133.3.179;UID=devuser;PWD=estar123;DATABASE=czefox"
        EADOConnection.Open
        pending = False
    End FunctionPublic Function initIt(max As Integer, init As Integer) As StringOn Error GoTo Errexit:
        Dim i As Integer
        Dim strResult As String
        maxConnections = max
        If init > max Then init = max
        initialConnections = init
        strResult = makeNewConnection()
        If Len(strResult) > 0 Then
            initIt = strResult
            GoTo Errexit
        Else
            For i = 1 To initialConnections
                availableConnections.Add EADOConnection
            Next
        End If
        
    Errexit:
        If Err > 0 Then
            initIt = Err.Description
            Err = 0
        End If
    End FunctionPublic Function getConnection() As ADODB.connection
        Dim connection As ADODB.connection
        
        If availableConnections.Count > 0 Then
        
            Set connection = availableConnections.Item(availableConnections.Count)
            availableConnections.Remove (availableConnections.Count)
            
            If connection.State = ADODB.adStateClosed Then
                getConnection = getConnection()
                Exit Function
            Else
                busyConnections.Add connection
                getConnection = connection
                Exit Function
            End If
            
        Else
            
            If (totalConnections() < maxConnections) And (Not pending) Then
                availableConnections.Add makeNewConnection()
                getConnection = getConnection()
                Exit Function
            Else
                getConnection = Null
            End If
            
        End If
    End FunctionPublic Sub freeConnection(connection As ADODB.connection)
        Dim i As Integer
        For i = 1 To busyConnections.Count
            If busyConnections.Item(i) = connection Then busyConnections.Remove (i)
        Next
        availableConnections.Add (connection)
    End SubPublic Function totalConnections() As Integer
        totalConnections = availableConnections.Count + busyConnections.Count
    End FunctionPrivate Sub Class_Initialize()
        maxConnections = 1
        initialConnections = 1
        pending = False
    End Sub
      

  6.   

    用set makeNewConnection = connection试试