VBMAN.ToolsList - 列表处理对象
概述
VBMAN.ToolsList 提供了与列表控件和数据集相关的实用功能,主要用于将数据库记录集转换为集合对象。
方法
RsToCollection
将 ADODB.Recordset 转换为 cCollection 集合
vb
Public Function RsToCollection(Obj As Variant) As cCollection参数:
Obj- ADODB.Recordset 对象
返回: cCollection 集合,每个元素是一个 Scripting.Dictionary,包含一行数据
说明:
- 自动处理记录集分页
- 每个字典的键是字段名,值是字段值
- 字典使用 TextCompare 比较模式(不区分大小写)
示例:
vb
' 从数据库查询
Dim rs As ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM users")
' 转换为集合
Dim coll As cCollection
Set coll = VBMAN.ToolsList.RsToCollection(rs)
' 遍历结果
Dim i As Long
For i = 1 To coll.Count
Dim row As Scripting.Dictionary
Set row = coll(i)
Debug.Print "ID: " & row("id")
Debug.Print "Name: " & row("name")
Debug.Print "---"
Next i综合示例
示例1: 数据库查询转集合
vb
Private Sub LoadUsersToCollection()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb"
Dim rs As ADODB.Recordset
Set rs = conn.Execute("SELECT id, username, email FROM users")
' 转换为集合
Dim users As cCollection
Set users = VBMAN.ToolsList.RsToCollection(rs)
' 使用数据
Dim user As Scripting.Dictionary
For Each user In users.RawCollection
Debug.Print user("username") & " - " & user("email")
Next
rs.Close
conn.Close
End Sub示例2: 分页记录处理
vb
Private Sub ProcessPagedData()
Dim rs As ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM large_table")
' 即使记录集有分页,RsToCollection 也能正确处理
Dim data As cCollection
Set data = VBMAN.ToolsList.RsToCollection(rs)
Debug.Print "共 " & data.Count & " 条记录"
End Sub最佳实践
- 及时关闭记录集: 转换完成后及时关闭 Recordset 释放资源
- 字段名访问: 使用字段名访问字典值,代码更清晰
- 空值处理: 注意数据库中的 Null 值处理