How to properly add new records to empty recordset manually?

bitcycle picture bitcycle · Feb 19, 2010 · Viewed 57k times · Source

How to add new records to a new & empty ADODB.Recordset manually?

Right now, here's what I'm doing that isn't working:

Dim rs as ADODB.Recordset
rs.Open
Dim Fields() as String
Fields(0) = "SomeFieldName"

Dim Values() as String
Value(0) = "SomeValue"

rs.AddNew Fields, Values

Answer

wqw picture wqw · Feb 19, 2010

In-place:

rs.AddNew "SomeFieldName", "SomeValue"

Or in-place multiple fields

rs.AddNew Array("SomeFieldName", "AnotherFieldName"), Array("SomeValue", 1234)

Or using separate vars

Dim Fields As Variant
Dim Values As Variant

Fields = Array("SomeFieldName")
Values = Array("SomeValue")
rs.AddNew Fields, Values

Edit: This is how to synthesize a recordset for the AddNew sample above

Set rs = new Recordset
rs.Fields.Append "SomeFieldName", adVarChar, 1000, adFldIsNullable
rs.Fields.Append "AnotherFieldName", adInteger, , adFldIsNullable
rs.Open

I'm usually using a helper function CreateRecordset as seen this answer.

Update 2018-11-12

You can also use field indexes as ordinals instead of field names as strings for the fields array like this

rs.AddNew Array(0, 1), Array("SomeValue", 1234)