Public Type emptype
    em_id As String
    em_name As String
End Type
Dim employees As New Collection
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Public Sub openTable()
    Dim employee As emptype
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    conn.ConnectionString = "provider=sqloledb.1;data source=.;user id=sa;password=lide;initial catalog=northwind"
    conn.Open
    rs.Open "employees", conn, adOpenKeyset, adLockPessimistic    For i = 1 To rs.RecordCount
        employee.em_id = rs.Fields(0)
        employee.em_name = rs.Fields(1)
        employees.Add employee, employee.em_id
        rs.MoveNext
    Next
End Sub上面报错为“只有在公共模块中用户自定义数据类型才可以与变体类型转换”不过,我放在公共模块中仍不行,为什么?怎么做?

解决方案 »

  1.   

    添加一个模块,然后将:
    Public Type emptype
        em_id As String
        em_name As String
    End Type
    添加进去。
    或者不添加模块,将它改为:
    Private Type emptype
        em_id As String
        em_name As String
    End Type
    这样的话只能在当前窗体中使用
      

  2.   

    是不是应该这样?
            employees.Add employee.em_name, employee.em_id
      

  3.   

    1、这段代码就要在公共模块中的;
    2、我是要添加一个员工对象到集合中,不仅要有姓名,还要ID;
    3、就算放在类模块中,问题仍是一样(当然这可以再做一个员工对象的类来解决,不过现在只想用自定义来做,MS的文档认为是行的)。请大家帮一下忙!!!
      

  4.   

    不行的話就用CopyMemory吧,HOHO...
      

  5.   

    http://community.csdn.net/Expert/topic/3037/3037274.xml?temp=.2789728