'存放集合物件的區域變數
Private mCol As CollectionPublic Function Add(RecordTime As Date, Machine As Integer, Serial As Long, Optional sKey As String) As clsCardRecord
'建立一個新物件
Dim objNewMember As clsCardRecord
Set objNewMember = New clsCardRecord
'設定傳給此方法的屬性
objNewMember.RecordTime = RecordTime
objNewMember.Machine = Machine
objNewMember.Serial = Serial
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
'傳回建立的物件
Set Add = objNewMember
Set objNewMember = Nothing
End FunctionPublic Property Get Item(vntIndexKey As Variant) As clsCardRecord
'用於引用集合物件的元素時
'vntIndexKey 可包含集合物件的索引或索引鍵值,因此需宣告為 Variant
'語法: Set foo = x.Item(xyz) or Set foo = x.Item(5)
Set Item = mCol(vntIndexKey)
End PropertyPublic Property Get Count() As Long
'用於取得集合物件的元素個數
'語法: Debug.Print x.Count
Count = mCol.Count
End Property
Public Sub Remove(vntIndexKey As Variant)
'用於移除集合物件的元素
'vntIndexKey 可包含索引或索引鍵值,因此需宣告為 Variant
'語法: x.Remove(xyz)
mCol.Remove vntIndexKey
End Sub
Public Property Get NewEnum() As IUnknown
'本屬性可配合 For...Each 語法來列舉集合物件的元素
Set NewEnum = mCol.[_NewEnum]
End Property
Private Sub Class_Initialize()
'當物件類別建立時同時產生本集合物件
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
'當類別終結時清除本集合物件
Set mCol = Nothing
End Sub其中
Public Property Get NewEnum() As IUnknown
'本屬性可配合 For...Each 語法來列舉集合物件的元素
Set NewEnum = mCol.[_NewEnum]
End Property這一句是什麼意思!
Private mCol As CollectionPublic Function Add(RecordTime As Date, Machine As Integer, Serial As Long, Optional sKey As String) As clsCardRecord
'建立一個新物件
Dim objNewMember As clsCardRecord
Set objNewMember = New clsCardRecord
'設定傳給此方法的屬性
objNewMember.RecordTime = RecordTime
objNewMember.Machine = Machine
objNewMember.Serial = Serial
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
'傳回建立的物件
Set Add = objNewMember
Set objNewMember = Nothing
End FunctionPublic Property Get Item(vntIndexKey As Variant) As clsCardRecord
'用於引用集合物件的元素時
'vntIndexKey 可包含集合物件的索引或索引鍵值,因此需宣告為 Variant
'語法: Set foo = x.Item(xyz) or Set foo = x.Item(5)
Set Item = mCol(vntIndexKey)
End PropertyPublic Property Get Count() As Long
'用於取得集合物件的元素個數
'語法: Debug.Print x.Count
Count = mCol.Count
End Property
Public Sub Remove(vntIndexKey As Variant)
'用於移除集合物件的元素
'vntIndexKey 可包含索引或索引鍵值,因此需宣告為 Variant
'語法: x.Remove(xyz)
mCol.Remove vntIndexKey
End Sub
Public Property Get NewEnum() As IUnknown
'本屬性可配合 For...Each 語法來列舉集合物件的元素
Set NewEnum = mCol.[_NewEnum]
End Property
Private Sub Class_Initialize()
'當物件類別建立時同時產生本集合物件
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
'當類別終結時清除本集合物件
Set mCol = Nothing
End Sub其中
Public Property Get NewEnum() As IUnknown
'本屬性可配合 For...Each 語法來列舉集合物件的元素
Set NewEnum = mCol.[_NewEnum]
End Property這一句是什麼意思!
例如定义一个类clsUser用以包含用户的信息,另一个类clsUsers定义为用户的集合
此时可用方法
For Each clsUser in clsUsers
Next
来列举所有的用户类clsUsers
clsCardRecords 類 表示該員工在考勤機中的打卡(每一天都會有多次打卡!)
而clsCardRecord 類 表示該員工在考勤機每次打卡的 時間, 考勤機的機號, 序號
Dim uCardRecords as clsCardRecords
dim uCardRecord as clsCardRecord实例化时只需实例化一个对象集,如:
Set uCardRecords = CreateObject("clsCardRecords")如需使用uCardRecord对象时,则无须重新创建,使用如下方法:
For Each uCardRecord in uCardRecords
'可取得集合中的所有对象实例
Next如需使用某对象时:
Set uCardRecord = uCardRecords(intCount)
Dim i As Long
Dim adoCmm As Command
Dim adoRec As Recordset
Dim uCardRecord As clsCardRecord
On Error GoTo ErrorHandler
'先从集合中寻找
For i = 1 To mCol.Count
If mCol(i).CardID = CardID Then Exit For
Next i
If i > mCol.Count Then
Set adoCmm = GetCommand(madoCnn)
adoCmm.Parameters.Append adoCmm.CreateParameter("@CardID ", adVarChar, adParamInput, 10, CardID )
'判断是否存在
adoCmm.CommandText = "select CardID from [CardRecord] where CardID =?"
Set adoRec = adoCmm.Execute
If adoRec.EOF Then
mvarErrorInfo = "[" & CardID & "]不存在!"
GoTo ErrorHandler
Else
Set uCardRecord = Append(CardID ,……)
End If
adoRec.Close
Set GetCardRecord= uPatient
Else
Set GetCardRecord= mCol(i)
End If
GoTo ExitHandler
ErrorHandler:
Set uCardRecord = Nothing
mvarErrorInfo = Err.Description
ExitHandler:
End Function这样你在应用程序设计中可以用
set uCardRecord = uCardRecords.GetCardRecord(CardID)方法来得到相应的clsCardRecord 类,这是我用自己做的一个组件中的例子稍微修改下得到的
for each in 语法这样就明白了吧!