【问题标题】:Insert file into access table将文件插入访问表
【发布时间】:2018-03-26 04:26:56
【问题描述】:

我有一个名为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 & ")"

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

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

    【讨论】:

    • 谢谢 Yawar 这正是我想要的
    【解决方案2】:

    “文件”不是 Access 中支持的适当 SQL 数据类型,available data types

    【讨论】:

      【解决方案3】:

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

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

      以下是您的选择:

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

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

      【讨论】:

        猜你喜欢
        • 2017-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多