我正在尝试将数据从数据库1中的table1移动到数据库2中的table2。表1与表2具有相同的字段。表1包含数据而表2没有。
rsDenuncia是数据库1中表1的记录集 regNuevoDenuncia是数据库2中表2的recorset
我实例化一个名为rsODenuncia的rsDenuncia的子记录集,它起作用了 我可以使用msgboxes检索数据。
Set rsODenuncia = rsDenuncia.Fields("pdfAdjunto").Value
MsgBox "Nombre el archivo: " & rsODenuncia("FileName").Value
MsgBox "Tipo de archivo: " & rsODenuncia.Fields("FileType").Value
MsgBox "Data del archivo: " & rsODenuncia.Fields("FileData").Value
但是当我尝试实例化表2的记录集(这是一个空表但与表1具有相同的字段)时会出现错误。 “没有当前记录”
Set regONuevoDenuncia = regNuevoDenuncia.Fields("pdfAdjunto").Value
有没有办法在不使用Value方法的情况下实例化regONuevoDenuncia,以便添加新数据?
提前致谢。
答案 0 :(得分:0)
在填充记录集之前,您无法以DB2的记录集的形式引用该字段。将记录添加到DB2后,错误就会消失。 如果没有看到您的所有代码,我建议您执行以下操作:
If not regNuevoDenuncia.eof then
Set regONuevoDenuncia = regNuevoDenuncia.Fields("pdfAdjunto").Value
答案 1 :(得分:0)
您需要先使用regNuevoDenuncia.AddNew
创建新的父记录,然后才能打开其附件的子记录集。以下代码是一个最小的例子:
Option Compare Database
Option Explicit
Sub CopyRecordsWithAttachments()
Dim cdb As DAO.Database
Dim rsDenuncia As DAO.Recordset2, rsODenuncia As DAO.Recordset2
Dim regNuevoDenuncia As DAO.Recordset2, regONuevoDenuncia As DAO.Recordset2
Set cdb = CurrentDb
cdb.Execute "DELETE FROM NuevoDenuncia", dbFailOnError ' clear previous test data, if any
Set rsDenuncia = cdb.OpenRecordset("Denuncia", dbOpenSnapshot)
Set regNuevoDenuncia = cdb.OpenRecordset("NuevoDenuncia", dbOpenDynaset)
Do Until rsDenuncia.EOF
regNuevoDenuncia.AddNew
regNuevoDenuncia!ID = rsDenuncia!ID
Set rsODenuncia = rsDenuncia.Fields("pdfAdjunto").Value
Set regONuevoDenuncia = regNuevoDenuncia.Fields("pdfAdjunto").Value
Do Until rsODenuncia.EOF
regONuevoDenuncia.AddNew
regONuevoDenuncia!FileName = rsODenuncia!FileName
regONuevoDenuncia!FileData = rsODenuncia!FileData
regONuevoDenuncia.Update
rsODenuncia.MoveNext
Loop
regONuevoDenuncia.Close
Set regONuevoDenuncia = Nothing
rsODenuncia.Close
Set rsODenuncia = Nothing
regNuevoDenuncia.Update
rsDenuncia.MoveNext
Loop
regNuevoDenuncia.Close
Set regNuevoDenuncia = Nothing
rsDenuncia.Close
Set rsDenuncia = Nothing
Set cdb = Nothing
Debug.Print "Terminado."
End Sub