Access VBA向Attachment字段导入文件时触发Invalid field data type错误求助
解决Access VBA加载附件到Attachment字段时的"Invalid field data type"错误
你碰到的这个错误根源很明确:Attachment类型的字段不能直接通过主记录集的字段对象调用LoadFromFile方法——它本质是一个嵌套的子记录集对象,得先打开这个子记录集才能完成附件加载操作。
下面是修正后的完整代码,我给你拆解下核心步骤:
- 打开主记录集时指定可更新类型,确保能修改数据
- 定位到目标记录后,打开Attachment字段对应的子记录集
- 在子记录集中新增一条记录,再调用
LoadFromFile加载文件 - 依次更新子记录集和主记录集,最后清理对象避免内存泄漏
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
相关产品推荐
相关产品推荐

