2014-04-30 75 views
0

我想编码一个简单的任务:从Access(2013)数据库检索附件并将其保存到磁盘。此刻,我希望代码从记录集中获取第一条记录并将附件保存到C:\ maptest.pdf保存附件到硬盘

它显示错误3265:在此集合中找不到项目(但数据库中的每个记录都有一个附件)。

有没有人有一个想法我做错了什么?

Private Sub CommandButton4_Click() 
Dim appAcc As New Access.Application 
Dim rst As DAO.Recordset2 
Dim rsA As DAO.Recordset2 
Dim fld As DAO.Field2 

Dim dbpath As String 
dbpath = ThisWorkbook.Path & "\SiteDetails.accdb" 

With appAcc 
    .OpenCurrentDatabase dbpath 
    Set rst = .CurrentDb.OpenRecordset("SiteMaps") 
    Set rsA = rst.Fields("Map").Value 
End With 


rsA.Fields("Map").SaveToFile _"C:\maptest.pdf" 


AppAcc.Quit 
Set appAcc = Nothing 

End Sub  
+0

请仔细阅读本文:[应该在标题中包含“标签”?](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) –

+0

行是这个错误? – RubberDuck

+0

它显示错误:rsA.Fields(“Map”)。SaveToFile _“C:\ maptest.pdf”但当我更改“地图”到“FileData”它工作正常。似乎我不必引用名为“Map”但是“FileData”的列(即使FileData不存在作为列) – user3520938

回答

0

这是因为地图不是DAO正在使用的标识符。

改变这一行,

rsA.Fields("Map").SaveToFile _"C:\maptest.pdf" 

到,

rsA.Fields("FileData").SaveToFile "C:\maptest.pdf" 

Microsoft

的的FileData字段由Access数据库 引擎内部保留来存储二进制附件数据。

更新:我发布之前,我看到你的最新更新,你发现了解决方案。简单地说,原因是你正在将一个字段拆分成自己的,自定义的文件附件的子记录集(在DAO中具有非常好的功能)。

+0

嗨,感谢您的答复。 – user3520938