How to properly add new records to empty recordset manually?
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开发者_StackOverflow中文版 ADODB.Recordset
rs.Open
Dim Fields() as String
Fields(0) = "SomeFieldName"
Dim Values() as String
Value(0) = "SomeValue"
rs.AddNew Fields, Values
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)
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
With an open connection Conn:
sSql="INSERT into mytable (somefieldname, anotherfieldname) values ('Somevalue','Anothervalue')"
Conn.Execute sSql
精彩评论