VBA Recordsets:为什么我在.addnew的Fieldvalue参数中声明我的数组的方式很重要?

时间:2011-09-27 19:35:12

标签: vba adodb recordset

我一直在尝试动态添加到Recordset,但我无法这样做。 adodb.recordset的.addnew函数似乎不允许将任何类型的数组传递给它的fieldvalues,values参数。例如,如果在使用适当的字段值设置记录集后,请说:

 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 个答案:

答案 0 :(得分:4)

这是因为在第一个示例中,您声明了两个VARIANT数据类型的数组,而在第二个示例中,您声明了STRING数组。

AddNew函数需要一个变量数组。

在第二个示例中,将第一行更改为:

Dim fieldsarray(0 To 1) As Variant

它应该有用。