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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:55:01