Dim WithEvents g_dbcon As ADODB.ConnectionPrivate Sub g_dbcon_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
'g_dbcon连接完成事件
End Sub这样的话 是可以响应到 g_dbcon连接完成事件
可现在不单要声明一个变量,现在是需要一个数组Dim WithEvents g_dbcon(10) As ADODB.Connection问题是查了MSDN WithEvents不支持 声明数组可我现在必须得 使用数组 怎么办呢?我查了一些资料看些高人说使用 用户控件什么的,没明白,哪位高人详细解释下或给点资料看看!我想了一个简单的办法就是 声明 若干个 变量
Dim WithEvents g_dbcon_1 As ADODB.Connection
Dim WithEvents g_dbcon_2 As ADODB.Connection
Dim WithEvents g_dbcon_3 As ADODB.Connection可这样在使用此变量的时候又不好用 如
rs.Open "select *from table", "g_dbcon_"+index, adOpenDynamic, adLockBatchOptimistic, 32万能的CSDN帮帮我,谢谢!

解决方案 »

  1.   

    将ADODB.Connection 生成一个用户控件.在用户控件里面增加相应的属性方法及事件.再在窗体上拉控件就行了,这样就能生成控件数组.
      

  2.   

    用集合试吧:    Dim cn1 As Connection
        Dim cn2 As Connection
        Dim rs As Recordset
        Dim col As Collection
        Dim obj As Object
        Dim i As Long
        
        Set cn1 = New Connection
        cn1.Open "......"
        Set cn2 = New Connection
        cn2.Open "......"
        
        Set col = New Collection
        col.Add cn1, "cn1"
        col.Add cn2, "cn2"
        
        For i = 1 To col.Count
            Set obj = col("cn" & i)
            Set rs = obj.Execute("select * from users where uid='017'")
            Debug.Print rs!Name
        Next
        
        Set rs = Nothing
        Set obj = Nothing
        Set cn1 = Nothing
        Set cn2 = Nothing
        Set col = Nothing
        
      

  3.   


    建立一个类 Class1: 
    Public   WithEvents   x   As   ADODB.Connection
    Public   nIndex as long
    ‘然后下面写X的各种事件代码 
    .......... 
    窗体: 
    Dim   g_dbcon(100)   As   New   ADODB.Connection
    Dim   b(100)   As   New   Class1 Private   Sub   Form_Load() 
            Dim   i   As   Long 
            For   i   =   0   To   100 
                    Set   b(i).x   =   g_dbcon(i) 
                    b.nIndex=i
            Next 
    End   Sub 
    这样用就可以了:
    rs.Open "select *from table", g_dbcon(i), adOpenDynamic, adLockBatchOptimistic, 32
    至于Connection的事件,交给Class1处理,可以通过nIndex判断出来是哪个Connection
      

  4.   

    http://topic.csdn.net/u/20070709/02/9a9af8f5-fe32-49c0-a863-c320c8b09b6a.html?1118741796
      

  5.   

    不好意思在问下 建立一个类 Class1: 
    Public  WithEvents  x  As  ADODB.Connection 
    Public  nIndex as long 
    ‘然后下面写X的各种事件代码 
    .......... 事件怎么写呢?Private Sub g_dbcon_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    Label10.Caption = "执行完成"
    End Sub比如上面的 
      

  6.   

    为什么要用这个事件?ADO又不是异步执行。
      

  7.   


    '增加一个控件. 以下就是在控件中的,'以下引用了 Open 方法及 ExecuteComplete 事件.'其它的方法及事件,LZ按这样的方式加了.'将此控件拉入窗体中,设定为数组.  想要多少就有多少.事件也有,方法也有,可以用数组控制.
    Option ExplicitPrivate WithEvents x As ADODB.ConnectionPublic Event ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    Private Sub x_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
      RaiseEvent ExecuteComplete(RecordsAffected, pError, adStatusCancel, pCommand, pRecordset, pConnection)
    End SubPublic Function cOpen(ByVal ConnectionString, Optional ByVal UserID, Optional ByVal PassWord, Optional Options As Long = -1)
       x.Open ConnectionString, UserID, PassWord, Options
    End Function
      

  8.   

    写在控件里是可以使用 可是到From里
    Private Sub UserControl11(1)_FetchComplete
    这样的控件数组还是不能用啊?
      

  9.   

    Private Sub UserControl11(数组)_FetchComplete
    这样的控件数组还是不能用啊?