You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access VBA向Attachment字段导入文件时触发Invalid field data type错误求助

解决Access VBA加载附件到Attachment字段时的"Invalid field data type"错误

你碰到的这个错误根源很明确:Attachment类型的字段不能直接通过主记录集的字段对象调用LoadFromFile方法——它本质是一个嵌套的子记录集对象,得先打开这个子记录集才能完成附件加载操作。

下面是修正后的完整代码,我给你拆解下核心步骤:

  1. 打开主记录集时指定可更新类型,确保能修改数据
  2. 定位到目标记录后,打开Attachment字段对应的子记录集
  3. 在子记录集中新增一条记录,再调用LoadFromFile加载文件
  4. 依次更新子记录集和主记录集,最后清理对象避免内存泄漏
Dim SQL As String
Dim VESRecordSet As Recordset
Dim attachRS As Recordset2 ' 注意:Attachment子记录集需要用Recordset2类型

SQL = "SELECT * FROM [table name] WHERE ID = '10'"
' 指定dbOpenDynaset类型,保证记录集可编辑
Set VESRecordSet = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)

If Not VESRecordSet.EOF Then
    VESRecordSet.Edit ' 进入主记录编辑模式
    ' 打开Attachment字段的子记录集
    Set attachRS = VESRecordSet![field name].Value
    attachRS.AddNew ' 新增一条附件记录
    ' 对FileData字段调用LoadFromFile加载目标文件
    attachRS("FileData").LoadFromFile "D:\Documents\file.vsd"
    attachRS.Update ' 保存子记录集的修改
    attachRS.Close ' 关闭子记录集
    VESRecordSet.Update ' 保存主记录集的修改
End If

' 清理对象释放资源
Set attachRS = Nothing
Set VESRecordSet = Nothing

几个关键提醒:

  • 必须用Recordset2类型处理Attachment的子记录集,这是Access针对附件字段专门设计的对象
  • 主记录集一定要用dbOpenDynaset类型,否则无法编辑修改
  • 操作完成后务必关闭所有记录集并释放对象,防止占用系统资源

内容的提问来源于stack exchange,提问作者user7867367

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:49:16