Как переместить запись с rs1 на rs2 (ADODB.Recordsets) с VBA? - PullRequest
0 голосов
/ 09 января 2020

В Access у меня есть rs1 и rs2, оба As ADODB.Recordset, они имеют одинаковые поля. Я хочу переместить запись / строку из rs1 в rs2.

. Я знаю, как это сделать с SQL или rs2.AddNew и повторять по Fields, но я бы хотел сделать это с помощью ADODB.Record -объекта, что-то вроде этого.

Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
...

Private Sub MoveRecord (id As Long)

  Dim r As ADODB.Record

  rs1.filter = "id=" & id

  Set r = rs1(0)

  ' And now??? rs2.Addnew r is rubbish...


End Sub 

Я пробовал Record.MoveRecord -метод, но, похоже, это для перемещения файлов?

Record.MoveRecord (Source, Destination, UserName, Password, Options, Async)

Source и Destination являются Strings, а не RecordSet с.

Можно ли это сделать, и если да, то как?

1 Ответ

2 голосов
/ 09 января 2020

Если вы считаете, что такая функция необходима, вы можете написать ее самостоятельно ...

Public Sub MoveCurrentRecord(rsSource, rsTarget)
   rsTarget.AddNew
   Dim fld
   For Each fld In rsSource.Fields
      rsTarget.Fields(fld.Name).Value = fld.Value
   Next
   rsTarget.Update
End If

Работает как с ADO, так и с DAO, а также с записью и набором записей в качестве исходного объекта. Обратите внимание, что вы можете захотеть реализовать дополнительные логи c, чтобы пропустить поля автонумерации.

...