Наборы записей VBA: Почему имеет значение способ объявления моего массива в параметрах Fieldvalue .addnew? - PullRequest
2 голосов
/ 27 сентября 2011

Я пытался динамически добавить набор записей, но я не могу этого сделать. Кажется, что функция .addnew набора adodb.recordset не позволяет передавать массив любого типа в его значения полей, значения параметров. Например, если после настройки вашего набора записей с соответствующими значениями поля вы говорите:

 FieldsArray = array("field1", "field2")
 ValuesArray = array("val1","val2")

 rs.AddNew FieldsArray, ValuesArray

Это работает !! Но если вы вместо этого напишите

 Dim fieldsarray(0 To 1) As String
 FieldsArray(0) = "field1"
 FieldsArray(1) = "field2"
 ValuesArray = array("val1","val2")

 rs.AddNew FieldsArray, ValuesArray

Неудача?!?! (Более конкретно [Ошибка времени выполнения '3001': аргументы имеют неправильный тип, находятся за пределами допустимого диапазона или конфликтуют друг с другом])

Почему способ объявления массива полей в параметрах .addnew имеет значение? Есть ли способ заставить последний работать?

1 Ответ

4 голосов
/ 27 сентября 2011

Это потому, что в первом примере вы объявляете два массива с типом данных VARIANT, а во втором примере вы объявляете STRING массивы.

Функция AddNew ожидает вариантный массив.

Во втором примере измените первую строку на:

Dim fieldsarray(0 To 1) As Variant

, и она должна работать.

...