VBA, MS Access MS Access в примерах

Копирование данных записи из одной таблицы в другую, аналогичную по структуре (DAO)

Private Sub CopyRecordToLog(vRecordID As Variant)
'Копирование данных записи из одной таблицы в другую, аналогичную по структуре (DAO)
'Аргумент = vRecordID = Номер записи по счётчику
'--------------------------------------------------------------------------
'... Тут из таблицы "DataTest" в неё-же, у которой поле "RecIDAuto" уникальный индекс типа счётчик
'--------------------------------------------------------------------------
Dim s As String
Dim rsSRS As DAO.Recordset
Dim rsDST As DAO.Recordset
Dim objField As DAO.Field
Dim l As Long
On Error GoTo CopyRecordToLog_Err
    
    s = "Select * From DataTest WHERE RecIDAuto=" & vRecordID
    Set rsSRS = CurrentDb.OpenRecordset(s, dbOpenSnapshot)  'Источник (одна запись) Только просмотр
    
    Set rsDST = CurrentDb.OpenRecordset("DataTest", dbOpenDynaset) 'Назначение (куда)
    
    With rsDST
        .AddNew
        For Each objField In .Fields
            'Проверка что полле не счётчик (по известному названию)
            If objField.Name <> "RecIDAuto" Then 'Поле не счётчик
                objField.Value = rsSRS(objField.Name).Value
            End If
        Next
        l = !RecIDAuto
        .Update
        MsgBox "Добавлена запись ID: " & l
    End With
   

CopyRecordToLog_End:
    On Error Resume Next
    Set objField = Nothing
    rsSRS.Close
    Set rsSRS = Nothing
    rsDST.Close
    Set rsDST = Nothing
    
    Err.Clear
    Exit Sub

CopyRecordToLog_Err:
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in Sub: CopyRecordToLog in module: 00ModuleForTests", vbCritical, "Error in Application"
    Resume CopyRecordToLog_End
End Sub
Назад ToTop
L.E. 20.01.2019
Рейтинг@Mail.ru