Skip to content

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

最佳实践

  1. 及时关闭记录集: 转换完成后及时关闭 Recordset 释放资源
  2. 字段名访问: 使用字段名访问字典值,代码更清晰
  3. 空值处理: 注意数据库中的 Null 值处理

VB6及其LOGO版权为微软公司所有