Skip to content

VBMAN.ToolsList - List Processing Object

Overview

VBMAN.ToolsList provides utility functions related to list controls and datasets, mainly used to convert database recordsets to collection objects.

Methods

RsToCollection

Convert ADODB.Recordset to cCollection

vb
Public Function RsToCollection(Obj As Variant) As cCollection

Parameters:

  • Obj - ADODB.Recordset object

Returns: cCollection, each element is a Scripting.Dictionary containing one row of data

Description:

  • Automatically handles recordset paging
  • Each dictionary's key is field name, value is field value
  • Dictionary uses TextCompare comparison mode (case insensitive)

Example:

vb
' Query from database
Dim rs As ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM users")

' Convert to collection
Dim coll As cCollection
Set coll = VBMAN.ToolsList.RsToCollection(rs)

' Iterate results
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

Comprehensive Examples

Example 1: Database Query to Collection

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")
    
    ' Convert to collection
    Dim users As cCollection
    Set users = VBMAN.ToolsList.RsToCollection(rs)
    
    ' Use data
    Dim user As Scripting.Dictionary
    For Each user In users.RawCollection
        Debug.Print user("username") & " - " & user("email")
    Next
    
    rs.Close
    conn.Close
End Sub

Example 2: Paged Record Processing

vb
Private Sub ProcessPagedData()
    Dim rs As ADODB.Recordset
    Set rs = conn.Execute("SELECT * FROM large_table")
    
    ' Even if recordset has paging, RsToCollection can handle correctly
    Dim data As cCollection
    Set data = VBMAN.ToolsList.RsToCollection(rs)
    
    Debug.Print "Total " & data.Count & " records"
End Sub

Best Practices

  1. Close Recordset in Time: Close Recordset promptly after conversion to release resources
  2. Field Name Access: Use field names to access dictionary values, code is clearer
  3. Null Value Handling: Pay attention to Null value handling in database

VB6 and LOGO copyright of Microsoft Corporation