使用adChar/adVarChar创建ADO Recordset报错3001,如何添加字符串字段?
解决ADO Recordset中字符串字段的运行时错误3001
触发错误的核心原因是:使用adChar或adVarChar类型时,必须指定字段的长度参数——这两个字符串类型不像adDouble那样无需额外参数,必须明确字符串的最大存储长度。
两种可行解决方案
- 方案1:给
adChar/adVarChar补充长度参数
直接在Fields.Append方法中添加长度值,比如城镇名字段设为50字符长度:lcObjRcs.Fields.Append "Town", adVarChar, 50 - 方案2:使用Unicode字符串类型(推荐适配Office环境)
用adWChar或adVarWChar替代,同样需要指定长度,比如州名字段设为2字符:lcObjRcs.Fields.Append "State", adVarWChar, 2
修正后的完整代码
Dim lcObjRcs As ADODB.Recordset Sub test_res() Set lcObjRcs = New ADODB.Recordset lcObjRcs.Fields.Append "Index", adDouble lcObjRcs.Fields.Append "Town", adVarChar, 50 lcObjRcs.Fields.Append "State", adVarWChar, 2 lcObjRcs.Open lcObjRcs.AddNew Array("Index", "Town", "State"), Array(1, "Kirkland", "IL") lcObjRcs.AddNew Array("Index", "Town", "State"), Array(2, "Colfax", "WI") lcObjRcs.AddNew Array("Index", "Town", "State"), Array(3, "Lansing", "IA") lcObjRcs.Update End Sub
补充说明
- 长度参数需设置为正整数,根据实际存储内容调整(比如州名固定2位,城镇名可设50或更长)
- 若需存储长文本,可使用
adLongVarChar或adLongVarWChar,这类类型无需指定长度
内容的提问来源于stack exchange,提问作者stuey
相关产品推荐
相关产品推荐

