How do you copy the entire record from one table to another including attachment filed?

被刻印的时光 ゝ 提交于 2019-12-25 00:33:52

问题


I have two tables, tb1 and tb2. I would like to copy the entire record from tab1 to tbl2. The tables contain attachment fields so INSERT statement is not suitable. My current approach uses DAO but its only copying the first record. Please see code:

Private Sub InsertRecord_Click()

Dim db As Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rsAttachment1 As DAO.Recordset2
Dim rsAttachment2 As DAO.Recordset2

Set rs1 = CurrentDb.OpenRecordset("tbl1")
Set rs2 = CurrentDb.OpenRecordset("tbl2")


With rs1
rs2.AddNew
rs2.Fields("ItemNo").Value = rs1.Fields("ItemNo").Value
rs2.Fields("Location").Value = rs1.Fields("Location").Value
rs2.Fields("Owner").Value = rs1.Fields("Owner").Value
rs2.Fields("DateSent").Value = DateTime.Now


    Set rsAttachment1 = rs1.Fields("ItemImage").Value
    Set rsAttachment2 = rs2.Fields("ItemImage").Value

    With rsAttachment1
        Do While Not .EOF
            rsAttachment2.AddNew
            rsAttachment2.Fields("FileData") = .Fields("FileData")
            rsAttachment2.Fields("FileName") = .Fields("FileName")

            rsAttachment2.Update
            rsAttachment1.MoveNext

        Loop
    End With
   rs2.Update
  .MoveNext
   End With
   rs2.Close
   Set rs2 = Nothing
  'rsAttachment1.Close
  Set rsAttachment1 = Nothing
  Set rsAttachment2 = Nothing

  End Sub

Any other better approach is also welcome.


回答1:


Use a loop:

While Not rs1.EOF

    With rs1
        rs2.AddNew
        rs2.Fields("ItemNo").Value = rs1.Fields("ItemNo").Value
        rs2.Fields("Location").Value = rs1.Fields("Location").Value
        rs2.Fields("Owner").Value = rs1.Fields("Owner").Value
        rs2.Fields("DateSent").Value = DateTime.Now   

        Set rsAttachment1 = rs1.Fields("ItemImage").Value
        Set rsAttachment2 = rs2.Fields("ItemImage").Value

        With rsAttachment1
            Do While Not .EOF
                rsAttachment2.AddNew
                rsAttachment2.Fields("FileData") = .Fields("FileData")
                rsAttachment2.Fields("FileName") = .Fields("FileName")        
                rsAttachment2.Update
                rsAttachment1.MoveNext        
            Loop
        End With
        rs2.Update
        .MoveNext
    End With

    rs1.MoveNext
Wend


来源:https://stackoverflow.com/questions/57153992/how-do-you-copy-the-entire-record-from-one-table-to-another-including-attachment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!