MS Access 2010备注字段更新大文本报错问题咨询
解决Access 2010 Memo字段存储大文本的报错问题
我来帮你搞定这个Access 2010里Memo字段存长文本的麻烦——这个坑我之前做项目的时候也碰到过,给你几个实测有效的方案:
1. 先确认Memo字段的属性设置
首先,Access 2010的Memo字段默认纯文本格式下最多只能存65535字符,你的16万字符已经远超这个上限了,这是直接粘贴报错的核心原因之一。
修改字段属性的步骤:
- 打开表的设计视图,选中目标Memo字段
- 在右侧「字段属性」的「文本格式」下拉菜单里,选择富文本
(设置为富文本后,Memo字段的存储上限会扩展到1GB,足够容纳你的大文本)
2. 用DAO Recordset替代SQL UPDATE语句
你之前用VBA读文件后执行UPDATE报错3035(系统资源不足),是因为Access的SQL语句对字符串参数的长度有限制,直接把16万字符塞进UPDATE语句里会触发资源溢出。换成Recordset直接赋值的方式就能解决:
Sub UpdateLargeMemoField() Dim rs As DAO.Recordset Dim filePath As String Dim fileContent As String ' 替换成你的文本文件路径 filePath = "C:\path\to\your\large_text_file.txt" ' 读取完整文件内容 Open filePath For Input As #1 fileContent = Input$(LOF(1), 1) Close #1 ' 打开目标记录集(替换成你的表名、字段名和筛选条件) Set rs = CurrentDb.OpenRecordset("SELECT YourMemoField FROM YourTableName WHERE ID = 1", dbOpenDynaset) If Not rs.EOF Then rs.Edit rs!YourMemoField = fileContent ' 直接给字段赋值,绕过SQL长度限制 rs.Update End If ' 清理资源 rs.Close Set rs = Nothing MsgBox "大文本更新完成!", vbInformation End Sub
这个方法的核心是通过DAO记录集直接操作字段值,避开了SQL语句的参数长度限制,不会再出现系统资源不足的错误。
3. 额外注意事项
- 不要直接在表或表单的文本框里粘贴大文本:Access的界面控件(比如文本框)对编辑模式下的文本长度有严格限制,哪怕字段本身支持长文本,直接粘贴还是会报错,必须通过后台VBA写入
- 确保你的Access 2010安装了最新的Service Pack:早期版本的Access 2010在处理超大Memo字段时存在一些bug,安装SP1及以上补丁可以避免部分异常
内容的提问来源于stack exchange,提问作者Cameron Castillo




