Как добавить новые записи на новый и пустой ADODB.Recordset вручную?
Прямо сейчас вот то, что я делаю, который не работает:
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
In-place:
rs.AddNew "SomeFieldName", "SomeValue"
Или in-place нескольких полей
rs.AddNew Array("SomeFieldName", "AnotherFieldName"), Array("SomeValue", 1234)
Или используя отдельные 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.
Обновление 2018-11-12
Вы также можете использовать индексы полей как ординалы вместо имен полей как строк для массива fields, как здесь
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
При открытом соединении Conn:
sSql="INSERT into mytable (somefieldname, anotherfieldname) values ('Somevalue','Anothervalue')"
Conn.Execute sSql