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 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 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 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