Как правильно добавлять новые записи в пустой набор записей вручную?

Как добавить новые записи в новый и пустой 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

person bitcycle    schedule 19.02.2010    source источник


Ответы (2)


На месте:

rs.AddNew "SomeFieldName", "SomeValue"

Или несколько полей на месте

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

Или используя отдельные вары

Dim Fields As Variant
Dim Values As Variant

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

Изменить: вот как синтезировать набор записей для примера AddNew выше.

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

Обычно я использую вспомогательную функцию CreateRecordset, как показано в этом ответе.

Обновление 2018-11-12

Вы также можете использовать индексы полей в качестве порядковых номеров вместо имен полей в виде строк для массива полей, подобного этому.

rs.AddNew Array(0, 1), Array("SomeValue", 1234)
person wqw    schedule 19.02.2010
comment
Не могли бы вы включить объявление и подготовку набора записей до вызова addnew()? Я хочу убедиться, что делаю все, что нужно, не больше и не меньше. - person bitcycle; 19.02.2010
comment
Как лучше всего выполнить оператор SQL в наборе записей после обновления AddNew? - person Lo Bellin; 28.10.2020
comment
@LoBellin Этот синтетический набор записей на стороне клиента не сохраняется в СУБД. Думайте об этом как о прославленном 2D-массиве. Невозможно выполнить какой-либо SQL, так как нет RDBMS. - person wqw; 29.10.2020

При открытом соединении Conn:

sSql="INSERT into mytable (somefieldname, anotherfieldname) values  ('Somevalue','Anothervalue')"
      Conn.Execute sSql
person Claudio    schedule 07.08.2010