0

我有一个非常简单的数据库可供访问,但对于每条记录,我需要附上扫描的文档(可能是 pdf)。最好的方法是什么,数据库不应该只是链接到电脑上的文件,而是应该复制并保存文件,这意味着如果原始文件丢失,数据库被移动或复制,文件应该仍然可以从数据库中访问。这可能吗?最简单的方法是什么?如果是应该我可以写一个宏,我只是不知道从哪里开始。而且当我显示表格的报告时,我只想查看文档的缩略图。谢谢你。

4

3 回答 3

2

正如其他回答者所指出的,将文件数据存储在数据库表中可能是一种有问题的做法。也就是说,我个人不会排除它,但如果您要采用该选项,我强烈建议将文件数据拆分到自己的后端文件中的自己的表中。例如:

  • 创建一个名为Scanned files.mdb(或Scanned files.accdb)的新数据库文件。
  • 添加一个名为ScansFileID自动编号、主键)、MainTableID(匹配主数据库文件中主表的主键)、FileName(文本)、FileExt(文本)和FileData('OLE 对象'的单个表一个 BLOB - 实际上不要使用 OLE 对象,因为它们会使数据库非常膨胀)。
  • 回到前端,添加对Scans链接表的引用。
  • 使用一点 VBA 从Scans表中上传和提取文件(如果您对此机制感兴趣,请发布一个单独的问题)。
  • 使用 VBAShell例程(如果必须)或ShellExecute从 Windows API(= 更好的选项 IMO)打开提取的数据。

如果您使用较新的 ACCDB 格式,那么您可以使用 smk081 建议的“附件”字段类型。这基本上为您完成了上述大部分步骤,但是“手动”执行操作会给您带来更大的灵活性 - 例如,它允许为每个文件提供“DateScanned”或“DateEffective”字段。

也就是说,您对缩略图的要求将需要显式编码,无论您采用何种选项。可能可以利用 Windows 文件预览 API,尽管在调查之前我肯定缩略图是一个明确的要求 - Access VBA 足够强大,可以鼓励尝试复杂的解决方案,但通常不够干净和现代,无法实现它们以一种特别可维护的方式。

于 2013-11-01T20:07:50.537 回答
0

您可以在表中使用 OLE 字段,但我真的建议您不要使用这种方法。数据库很快就会变得庞大,你会后悔的。

相反,您应该考虑添加一个存储文件路径的字段,并将文件保存在网络上的一个文件夹中。然后您可以使用 SHELL() 命令打开文件。如果出现问题,恢复 Access 数据库和恢复 PDF 文件有什么区别?这将使您的数据库保持在可管理的大小并减少损坏的可能性。

于 2013-11-01T19:05:44.163 回答
0

当您进入表格的设计视图时,数据类型下有一个附件类型。您可以在此处添加附件字段。当您进入表格的数据表视图时,您可以为特定行选择此字段,然后将打开一个窗口供您指定附件。如果您添加大量大型附件,这将导致您的数据库快速增长。

于 2013-11-01T16:32:05.953 回答