0

我有一个名为的表Reports,它有 3 个字段ID(自动编号)、filename(字符串字段)、theFile(附件字段)。

我想要的是运行 SQL 查询并将 PDF 文件插入附件字段 ( theFile)。

假设 PDF 文件位于 C: 驱动器 (C:\report1.pdf),我尝试了下面的 SQL 查询,但它不起作用。我知道将文件存储在数据库中并不是一个好习惯,但我只是想尝试一下:

CurrentDb.Execute "INSERT INTO Reports (filename,theFile) VALUES ('report1'," & C:\report1.pdf & ")"
4

3 回答 3

2

将文件存储在数据库中是标准做法。Access当然支持它,但不是通过SQL。您必须使用 DAO,详见http://msdn.microsoft.com/en-us/library/office/bb258184%28v=office.12%29.aspx

于 2013-03-03T00:18:56.657 回答
0

“文件”不是 Access 中支持的适当 SQL 数据类型,可用数据类型

于 2013-03-02T23:20:06.760 回答
0

没错,Derek,如果您尝试运行这样的 SQL 语句,您每次都会收到一种或另一种类型的错误消息。我花了相当多的时间为我自己的数据库研究这个主题,据我所知,有很多选择/替代方案;但是,具有附件列类型并使用 SQL 插入文件并不是 Access 当前功能的选项。

将文件存储在数据库中并不是坏习惯,它实际上是标准做法;但是,最好不要将文件存储在 ACCESS 数据库中。这有几个原因,您可以自己研究,但也许最值得注意的是,Access 的文件大小限制为 2GB,因此如果您将文件存储在其中,您可能会很快耗尽空间,然后事情变得更加复杂.

以下是您的选择:

  1. 将您的列数据类型更改为 OLE 对象并使用某种流读取器将文件转换为二进制数据,然后使用 SQL 语句将它们加载到您的数据库中
  2. 使用内置的 Access 用户界面直接处理表格/附件
  3. 建立 DAO 数据库连接并使用 Access'recordset.LoadFromFile 函数
  4. 只需将链接存储到 Access DB 中的文件

第 4 个选项是首选方法。它非常简单,您不必担心复杂的代码或 2GB 的存储限制。

于 2018-03-25T20:26:56.493 回答