Редактировать набор записей ADO без изменения базы данных - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь добавить некоторые данные в набор записей, прежде чем вставить их содержимое в лист. Я хочу лечить набор записей, отключенный от БД, таким образом изменяя только сами импортированные данные.

Я использовал метод из этой темы , но, к сожалению, я получаю сообщение об ошибке:

Многошаговая операция вызвала ошибки Проверьте каждое значение состояния.

Короче говоря, у меня есть запрос с пустым полем, которое я заполняю перед вставкой 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

В качестве альтернативы я мог бы заполнить массив набором записей и отредактировать этот массив, но я чувствую, что это шаг, который мне не нужно делать

1 Ответ

1 голос
/ 26 июня 2019

Вы можете отключить набор записей ADO перед внесением изменений.Однако, в зависимости от того, действительно ли набор записей является обновляемым, вы все равно можете столкнуться с ошибками.

Чтобы отключить набор записей, просто удалите соединение:

Set rs.ActiveConnection = Nothing

Это предотвратит отправку любого сообщения.обратно на сервер.

Отключенные наборы записей по-прежнему зависят от базы данных в отношении того, что доступно для записи.Они могут переподключиться, и тогда они смогут отправить изменения обратно в базу данных.

Если вы хотите настроить вещи, которые не доступны для записи на стороне базы данных, я рекомендую переместить набор записей в массив.Вы можете использовать метод GetRows для эффективного перемещения данных.

...