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
Use the AddNew method to create and add a new record in the Recordset object named by recordset. This method sets the fields to default values, and if no default values are specified, it sets the fields to Null (the default values specified for a table-type Recordset).
A Recordset object represents the records in a base table or the records that result from running a query.
The ADO Recordset object is used to hold a set of records from a database table. A Recordset object consist of records and columns (fields). In ADO, this object is the most important and the one used most often to manipulate data from a database.
set rs = new ADODB.Recordset
rs.Open "Select SomeFieldName, AnotherFieldName FROM MyTable", myConnection, adOpenDynamic, adLockOptimistic
rs.AddNew
rs("SomeFieldName").Value = "SomeValue"
rs("AnotherFieldName").Value = 1
rs.Update
rs.AddNew
rs("SomeFieldName").Value = "AnotherValue"
rs("AnotherFieldName").Value = 2
rs.Update
rs.Close
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With