'==========CDepartment Class=================
Private m_lngDeptId As Long
Private m_strDeptName As String
Public Property Let DeptId(ByVal p_lngDeptId As Long)
m_lngDeptId = p_lngDeptId
End Property
Public Property Get DeptId() As Long
DeptId = m_lngDeptId
End Property
Public Property Let DeptName(ByVal p_strDeptName As String)
m_strDeptName = p_strDeptName
End Property
Public Property Get DeptName() As String
DeptName = m_strDeptName
End Property
'=============CDepartments Collection==========
Private m_colDept As Collection
Public Sub Add(Item As CDepartment, key As Variant)
m_colDept.Add Item, key
End Sub
Public Property Get Count() As Long
Count = m_colDept.Count
End Property
Public Sub Remove(index As Variant)
m_colDept.Remove key
End Sub
Private Sub Class_Initialize()
Set m_colDept = New Collection
End Sub
Public Function Item(index As Variant) As CDepartment
Set Item = m_colDept.Item(index)
End Function
'===============CDB========================
Private m_CN As ADODB.Connection
Public Function GetDepartmentRS() As ADODB.Recordset
Dim rs As New ADODB.Recordset
rs.Open "Select * from department", m_CN, adOpenStatic
Set GetDepartmentRS = rs.Clone
rs.Close
Set rs = Nothing
End Function
Private Sub Class_Initialize()
Set m_CN = New ADODB.Connection
'change this to any other connection
m_CN.Open "provider=microsoft.jet.oledb.4.0;data source=c:\MyDB.mdb"
End Sub
Private Sub Class_Terminate()
If m_CN.State = adStateOpen Then m_CN.Close
Set m_CN = Nothing
End Sub
'=============CBusiness Class================
Private m_objDBOper As CDB
Private Sub Class_Initialize()
Set m_objDBOper = New CDB
End Sub
Private Sub Class_Terminate()
Set m_objDBOper = Nothing
End Sub
Public Function GetDepartmentData() As CDepartments
Dim objDept As CDepartment
Dim rs As New ADODB.Recordset
Dim colTemp As New CDepartments
Set rs = m_objDBOper.GetDepartmentRS()
Do Until rs.EOF
'prepare Department object
Set objDept = New CDepartment
With objDept
.DeptId = rs.Fields.Item("DeptId").Value
.DeptName = rs.Fields.Item("DeptName").Value
End With
'add department to the collection
colTemp.Add objDept, CStr(rs.Fields.Item("DeptId").Value)
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set GetDepartmentData = colTemp
End Function
'===========Form Code==================
Private Sub Command1_Click()
Dim objDepts As CDepartments
Dim objBus As New CBusiness
Dim i As Integer
Set objDepts = objBus.GetDepartmentData()
For i = 1 To objDepts.Count
List1.AddItem objDepts.Item(CStr(i)).DeptName
Next
End Sub