在不改变数据库的情况下编辑 ADO 记录集
Edit an ADO recordset without altering the database
我想先将一些数据添加到记录集中,然后再将其内容粘贴到工作表中。我想处理与数据库断开连接的记录集,因此只更改导入的数据本身。
我使用了 this thread 中的方法,但不幸的是我得到了错误:
Multiple-step operation generated errors. Check each status value.
简而言之,我有一个空字段的查询,我在将 rs 粘贴到 ws 之前填充了该字段。
请注意,我遗漏了很多代码。声明了所有变量。
Public Function getdata(query As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim connstring As String
Set cnn = New ADODB.Connection
connstring = "omitted"
cnn.Open connstring
Set getdata = New ADODB.Recordset
getdata.CursorLocation = adUseClient
getdata.Open query, connstring, adOpenStatic, adLockBatchOptimistic
cnn.Close
End Function
'----------------------------------
Sub Start()
'Code
Dim rs As ADODB.RecordSet
Set rs = getdata("Select Code, '' From (values" & RegularCode & "," & RegularCodeBase & ") As AT(Code) Except Select Code, '' From astAssetTypes")
rs.Fields(1).Value = "TestValue" 'Error on this line
'Code
End Sub
或者,我可以用记录集填充数组并编辑该数组,但我觉得这是我不需要采取的步骤
您可以在进行编辑之前断开 ADO 记录集。但是,根据记录集是否实际可更新,您仍然可以 运行 出错。
要断开记录集,只需删除连接:
Set rs.ActiveConnection = Nothing
这将阻止它将任何更改发送回服务器。
断开连接的记录集在可写内容方面仍然依赖于数据库。他们可以重新连接,然后应该能够将更改提交回数据库。
如果你想调整数据库端不可写的东西,我建议将记录集移动到数组。您可以使用 GetRows method 有效地移动数据。
我想先将一些数据添加到记录集中,然后再将其内容粘贴到工作表中。我想处理与数据库断开连接的记录集,因此只更改导入的数据本身。
我使用了 this thread 中的方法,但不幸的是我得到了错误:
Multiple-step operation generated errors. Check each status value.
简而言之,我有一个空字段的查询,我在将 rs 粘贴到 ws 之前填充了该字段。
请注意,我遗漏了很多代码。声明了所有变量。
Public Function getdata(query As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim connstring As String
Set cnn = New ADODB.Connection
connstring = "omitted"
cnn.Open connstring
Set getdata = New ADODB.Recordset
getdata.CursorLocation = adUseClient
getdata.Open query, connstring, adOpenStatic, adLockBatchOptimistic
cnn.Close
End Function
'----------------------------------
Sub Start()
'Code
Dim rs As ADODB.RecordSet
Set rs = getdata("Select Code, '' From (values" & RegularCode & "," & RegularCodeBase & ") As AT(Code) Except Select Code, '' From astAssetTypes")
rs.Fields(1).Value = "TestValue" 'Error on this line
'Code
End Sub
或者,我可以用记录集填充数组并编辑该数组,但我觉得这是我不需要采取的步骤
您可以在进行编辑之前断开 ADO 记录集。但是,根据记录集是否实际可更新,您仍然可以 运行 出错。
要断开记录集,只需删除连接:
Set rs.ActiveConnection = Nothing
这将阻止它将任何更改发送回服务器。
断开连接的记录集在可写内容方面仍然依赖于数据库。他们可以重新连接,然后应该能够将更改提交回数据库。
如果你想调整数据库端不可写的东西,我建议将记录集移动到数组。您可以使用 GetRows method 有效地移动数据。