超级难题,高手看看这是什么?
smuzy 2003-07-31 02:37:54 Option Explicit
Public Menu_Id As Long
Public Position_Id As Integer
Private mCol As Collection
Private mColCol As Collection '存放mCol的col
Public ErrMsg As String
Public Property Get Count() As Long
Count = mCol.Count
End Property
Public Property Get ColCount() As Long
ColCount = mColCol.Count
End Property
Public Property Get Item(vntIndexKey As Variant) As Struct_PageItem
Set Item = mCol(vntIndexKey)
End Property
Public Property Get ColItem(vntIndexKey As Variant) As Struct_PageItems
Set ColItem = mColCol(vntIndexKey)
End Property
Public Sub Add(objin As Struct_PageItem)
mCol.Add objin, "A" & objin.Id
End Sub
Public Sub ColAdd(objin As Struct_PageItems)
mColCol.Add objin, "A" & objin.Position_Id
End Sub
Public Sub Clear()
Set mCol = Nothing
Set mColCol = Nothing
Set mCol = New Collection
Set mColCol = New Collection
End Sub
Public Function Init(ByVal Menu_Id As Long, Optional ByVal Position_Id As Integer = -2) As Boolean
Init = False
ErrMsg = ""
If Menu_Id < 0 Then
ErrMsg = "请传入合法的栏目Id"
Exit Function
End If
Me.Menu_Id = Menu_Id
Me.Position_Id = Position_Id
Dim objtemp As Struct_PageItem
Dim Rs As New ADODB.Recordset
'这个地方虽然说是get_page但是返回的是全部,而非一页。
Set Rs = Conn.Execute("EXEC get_page_Struct_PageItems @Menu_Id=" & Menu_Id & ",@Position_Id=" & Position_Id)
With Rs
If Position_Id > 0 Then
'有Position_Id的时候是个简单集合
While Not Rs.EOF
Set objtemp = New Struct_PageItem
objtemp.Id = .Fields("Id")
objtemp.Menu_Id = .Fields("Menu_Id")
objtemp.Position_Id = .Fields("Position_Id")
objtemp.Content_Menu_Id = .Fields("Content_Menu_Id")
objtemp.Function_Id = .Fields("Function_Id")
objtemp.Order = .Fields("Order")
If Not objtemp.XML_Config.Init(.Fields("XML_Config"), wsXMLStruct_Page, objtemp.Id) Then
ErrMsg = ErrMsg & "记录" & objtemp.Id & " XML_Config加载失败"
End If
Me.Add objtemp
Set objtemp = Nothing
.MoveNext
Wend
Else
Dim objcol As Struct_PageItems
Dim tPosition_Id1 As Integer
Dim tPosition_Id2 As Integer
While Not .EOF
tPosition_Id2 = .Fields("Position_Id")
If Not tPosition_Id1 = tPosition_Id2 Then
Set objcol = Nothing
Set objcol = New Struct_PageItems
objcol.Position_Id = tPosition_Id2
End If
Set objtemp = New Struct_PageItem
objtemp.Id = .Fields("Id")
objtemp.Menu_Id = .Fields("Menu_Id")
objtemp.Position_Id = tPosition_Id2
objtemp.Content_Menu_Id = .Fields("Content_Menu_Id")
objtemp.Function_Id = .Fields("Function_Id")
objtemp.Order = .Fields("Order")
If Not objtemp.XML_Config.Init(.Fields("XML_Config"), wsXMLStruct_Page, objtemp.Id) Then
ErrMsg = ErrMsg & "记录" & objtemp.Id & " XML_Config加载失败"
End If
objcol.Add objtemp
Set objtemp = Nothing
If Not tPosition_Id1 = tPosition_Id2 Then
tPosition_Id1 = tPosition_Id2
Me.ColAdd (objcol)
End If
.MoveNext
Wend
End If
.Close
End With
Set Rs = Nothing
Init = True
End Function
Private Sub Class_Initialize()
Set mCol = New Collection
Set mColCol = New Collection
End Sub
Private Sub Class_Terminate()
Set mCol = Nothing
Set mColCol = Nothing
End Sub
怎么能够这样写?