我需要使用表单将PDF文件存储在共享驱动器上的Access数据库中。我想出了如何在表中执行此操作(使用OLE对象字段,然后只需拖放),但我想在具有“保存”按钮的窗体上执行此操作。单击“保存”按钮将在数据库中存储文件(而不仅仅是链接)。关于如何做到这一点的任何想法?
编辑: 我使用Access 2003,数据库将存储在共享驱动器上,所以我不确定链接到文件将解决问题。
答案 0 :(得分:3)
我们有几个包含10个成千上万个文档的数据库(pdf,doc,jpg,...),完全没问题。在Access中,我们使用以下代码将二进制对象上载到二进制字段:
Function LoadFileFromDisk(Bestand, Optional FileName As String = "")
Dim imgByte() As Byte
If FileName = "" Then FileName = strFileName
Open FileName For Binary Lock Read As #1
ReDim imgByte(1 To LOF(1))
Get #1, , imgByte
Close #1
If Not IsEmpty(imgByte) Then Bestand.Value = imgByte
End Function
在这种情况下,Bestand是包含二进制数据的字段。 我们使用MS SQL Server作为后端,但同样适用于Access后端。
答案 1 :(得分:2)
如果您使用相同的概念,但升级到SQL Server-在Image数据类型(或varbinary(max))内存储PDF,那么您可以使用全文搜索在PDF内搜索。
我表示微软表示你可以为你可以注册IFILTER产品的任何文件类型执行此操作..我前几天就在Adobe网站上说他们的Acrobat IFILTER确实是免费的。
答案 2 :(得分:0)
也许这会有所帮助:ACC2000: Reading, Storing, and Writing Binary Large Objects (BLOBs)。
他们做什么:以块的形式读取文件,并使用VBA函数将其添加到blob中。
答案 3 :(得分:0)
OLE对象的字段,默认情况下将在窗体上使用绑定对象框。右键单击它,您可以插入一个对象。它配备了浏览文件。双击该字段,将打开实际文档。
我建议大卫的建议和链接。除非您需要传输单个文件并希望包含所有PDF。尺寸和性能将是一个问题。
如果安全性存在问题且Access文件是您拥有的唯一控件(您无法在包含所有链接文件的文件夹上设置安全性。),则必须嵌入。