如何手动将新记录正确添加到空记录集?

bit*_*cle 11 vb6 ado

如何手动将新记录添加到新的空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
Run Code Online (Sandbox Code Playgroud)

wqw*_*wqw 15

到位:

rs.AddNew "SomeFieldName", "SomeValue"
Run Code Online (Sandbox Code Playgroud)

或就地多个字段

rs.AddNew Array("SomeFieldName", "AnotherFieldName"), Array("SomeValue", 1234)
Run Code Online (Sandbox Code Playgroud)

或者使用单独的变量

Dim Fields As Variant
Dim Values As Variant

Fields = Array("SomeFieldName")
Values = Array("SomeValue")
rs.AddNew Fields, Values
Run Code Online (Sandbox Code Playgroud)

编辑:这是如何合成上面的AddNew示例的记录集

Set rs = new Recordset
rs.Fields.Append "SomeFieldName", adVarChar, 1000, adFldIsNullable
rs.Fields.Append "AnotherFieldName", adInteger, , adFldIsNullable
rs.Open
Run Code Online (Sandbox Code Playgroud)

我通常使用帮助函数CreateRecordset,如此答案.

更新2018-11-12

您还可以使用字段索引作为序数而不是字段名称作为字段数组的字符串,如下所示

rs.AddNew Array(0, 1), Array("SomeValue", 1234)
Run Code Online (Sandbox Code Playgroud)


C-P*_*uru 5

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
Run Code Online (Sandbox Code Playgroud)