You can create an ADODB.Recordset object and specify the column information. You can then insert data into the Recordset object; the underlying rowset buffers the inserts.
The following code example shows how to define a Recordset by using the RDSServer.DataFactory object. You can also do this with the RDS.DataControl object.
Sub RsDefineShape()
Dim vntRecordShape(3)
Dim vntField1Shape(3)
Dim vntField2Shape(3)
Dim vntField3Shape(3)
Dim vntField4Shape(3)
' For each field, specify the name,
' type, size, and nullability.
vntField1Shape(0) = "Name" ' Column name.
vntField1Shape(1) = CInt(129) ' Column type.
vntField1Shape(2) = CInt(40) ' Column size.
vntField1Shape(3) = False ' Nullable?
vntField2Shape(0) = "Age"
vntField2Shape (1) = CInt(3)
vntField2Shape (2) = CInt(-1)
vntField2Shape (3) = True
vntField3Shape (0) = "DateOfBirth"
vntField3Shape (1) = CInt(7)
vntField3Shape (2) = CInt(-1)
vntField3Shape (3) = True
vntField4Shape (0) = "Balance"
vntField4Shape (1) = CInt(6)
vntField4Shape (2) = CInt(-1)
vntField4Shape (3) = True
' Put all fields into an array of arrays.
vntRecordShape(0) = vntField1Shape
vntRecordShape(1) = vntField2Shape
vntRecordShape(2) = vntField3Shape
vntRecordShape(3) = vntField4Shape
' Use the RDSServer.DataFactory to create an empty
' recordset. It takes an array of variants where
' every element is itself another array of
' variants, one for every column required in the
' recordset.
' The elements of the inner array are the column's
' name, type, size and nullability.
Dim NewRs
' You could just use the RDS.DataControl object
' instead of the RDSServer.DataFactory object. In
' that case, the following code would be Set NewRS
' = ADC1.CreateRecordset(vntRecordShape)
Set NewRS = ADF.CreateRecordset(vntRecordShape)
Dim fields(3)
fields(0) = vntField1Shape(0)
fields(1) = vntField2Shape (0)
fields(2) = vntField3Shape (0)
fields(3) = vntField4Shape (0)
' Populate the new recordset with data values.
Dim fieldVals(3)
' Use AddNew to add the records.
fieldVals(0) = "Joe"
fieldVals(1) = 5
fieldVals(2) = CDate(#1/5/96#)
fieldVals(3) = 123.456
NewRS.AddNew fields, fieldVals
fieldVals(0) = "Mary"
fieldVals(1) = 6
fieldVals(2) = CDate(#6/5/96#)
fieldVals(3) = 31
NewRS.AddNew fields, fieldVals
fieldVals(0) = "Alex"
fieldVals(1) = 13
fieldVals(2) = CDate(#1/6/96#)
fieldVals(3) = 34.0001
NewRS.AddNew fields, fieldVals
fieldVals(0) = "Susan"
fieldVals(1) = 13
fieldVals(2) = CDate(#8/6/96#)
fieldVals(3) = 0.0
NewRS.AddNew fields, fieldVals
NewRS.MoveFirst
' Set the newly created and populated Recordset to
' the SourceRecordset property of the
' RDS.DataControl to bind to visual controls.
Set ADC1.SourceRecordset = NewRS
End Sub