Как правильно добавить новые записи в пустой набор записей вручную? - PullRequest
10 голосов
/ 19 февраля 2010

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

Ответы [ 3 ]

15 голосов
/ 19 февраля 2010

В месте:

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

Edit: это как синтезировать набор записей для примера 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)
5 голосов
/ 19 февраля 2010
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
0 голосов
/ 08 августа 2010

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

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