For COM objects that pull their data from a database, here's a quick way to load up the object with all of its fields. This code makes the assumption that each database field has a corresponding object attribute with the same name. Make sure the recordset is open to the record being loaded into the object before using this code.
Public Sub FillObject(objInput As Object, rsInput As ADODB.Recordset)
Dim objField As ADODB.Field
For Each objField In rsInput.Fields
If Not IsNull(rsInput(objField.Name)) Then
CallByName objInput, objField.Name, _
VbLet, rsInput(objField.Name)
End If
Next objField
End Sub