我在access中有一个非常简单的数据库,但对于每个记录,我需要附加一个扫描的文档(可能是pdf)。要做到这一点,最好的方法是什么,数据库不应该只是链接到pc上的文件,而应该复制并保留文件,这意味着如果原始文件丢失,数据库被移动或复制,该文件仍然可以从数据库中访问。这个是可能的吗?那么最简单的方法是什么呢?如果我应该写一个宏,我只是不知道从哪里开始。另外,当我显示表的报告时,我希望只看到文档的缩略图。谢谢。
发布于 2013-11-02 04:07:51
正如其他回答者所指出的那样,将文件数据存储在数据库表中可能是一种有问题的做法。也就是说,我个人不会排除这种可能性,但是如果您打算采用这种选择,我强烈建议将文件数据拆分到它自己的后端文件中的表中。例如:
Scanned files.mdb
的新数据库文件(或创建一个名为Scans
的表,其字段如FileID
(AutoNumber,主键)、MainTableID
(匹配主数据库文件中主表的任何主键)、FileName
(文本)、FileExt
(文本)和FileData
('OLE对象‘,实际上只是一个BLOB -不要实际使用OLE对象,因为它们会使前端的数据库horribly).Scans
的引用。使用一些Scans
表中的文件(如果您对此机制感兴趣,请发布一个单独的VBA Shell
例程(如果需要)或Windows API中的ShellExecute
(=更好的选项IMO)以打开提取的数据。如果您使用的是较新的ACCDB格式,则可以按照smk081的建议使用“attachment”字段类型。这基本上为你完成了上面的大部分步骤,但是“手工”给了你更大的灵活性-例如,它允许给每个文件一个'DateScanned‘或'DateEffective’字段。
也就是说,您对缩略图的要求将需要显式编码,无论您选择什么选项。也许可以利用Windows文件预览API,尽管在研究这一点之前,我可以肯定缩略图是一个明确的要求- Access VBA足够强大,可以鼓励尝试复杂的解决方案,但通常不够干净和现代,无法以一种特别可维护的方式实现它们。
发布于 2013-11-02 00:32:06
当您进入表的“设计”视图时,“数据类型”下有一个附件类型。您可以在此处添加附件字段。当您进入表的“数据表视图”时,可以为特定行选择此字段,此时将打开一个窗口,供您指定附件。如果您添加了大量大型附件,这将导致数据库的大小迅速增加。
发布于 2013-11-02 03:05:44
您可以在表中使用OLE字段,但我强烈建议您不要使用此方法。数据库很快就会变得巨大,你会后悔的。
相反,您应该考虑添加一个存储文件路径的字段,并将文件保存在网络上的一个文件夹中。然后,您可以使用SHELL()命令打开该文件。如果出现问题,恢复Access数据库和恢复PDF文件有什么不同?这将使您的数据库保持在可管理的大小,并减少损坏的可能性。
https://stackoverflow.com/questions/19730993
复制相似问题