2014-02-28 43 views
0

我试图将数据库1中的表1的数据移动到数据库2的表2中。表1与表2具有相同的字段。表1有数据和表2没有。MS Access 2010 - 使用DAO实例化子记录集并获取“无当前记录”错误

rsDenuncia是表1从数据库中记录1 regNuevoDenuncia是表2中从数据库中recorset 2

我实例rsDenuncia的子记录名为rsODenuncia和它的作品,因为 我可以使用来获取数据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 

有没有一种方法来实例化regONuevoDenuncia不使用值的方法,所以我可以添加新的数据?

在此先感谢。

回答

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 
0

在记录集填充之前,您无法以您所处的方式在DB2的记录集中引用该字段。一旦将记录添加到DB2中,那么错误将消失。 没有看到所有的代码,我建议你做这样的事情:

If not regNuevoDenuncia.eof then 
    Set regONuevoDenuncia = regNuevoDenuncia.Fields("pdfAdjunto").Value 
相关问题