adChar 和 adVarChar 是有效的 ADO 数据类型吗?运行时错误“3001”

问题描述 投票:0回答:1

工作已从我们的 PC 中删除了 MS Access! 因此,我尝试在更独立的基础上学习使用 ADO 记录集,并尝试以下代码:

Dim lcStrSQL            As String
Dim lcObjRcs            As ADODB.Recordset

Sub test_res()
    Set lcObjRcs = New ADODB.Recordset
    lcObjRcs.Fields.Append "Index", adDouble '* Could be any ADO type
    lcObjRcs.Fields.Append "Town", adChar
    lcObjRcs.Fields.Append "State", adChar

    lcObjRcs.Open

'Add your test records here...

    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

当我尝试运行此代码时出现的错误是“运行时错误'3001':参数类型错误,超出可接受的范围,或者彼此冲突”并且突出显示的行( highlit?)是

lcObjRcs.Fields.Append "Town", adChar
当我尝试 adVarChar 时,会发生同样的错误,我对这些作为有效数据类型的信念是基于此,来自马口:

https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/datatypeenum?view=sql-server-ver16

我将所有字段更改为 adDouble (并且 obv 用其他整数替换了字符串值)并且它运行良好。

如何将字符串放入我的记录集字段中?

(MS Office 2021;Excel 版本 2409 内部版本 18025.20140;VBA 版本 7.1)

excel ado recordset
1个回答
0
投票

我下面的代码似乎有效。我似乎找不到在线参考资料,但这是我前一段时间才学到的东西。

Sub test_res()
    Set lcObjRcs = New ADODB.Recordset
    lcObjRcs.Fields.Append "Index", adDouble  ' Correct field type for a number
    lcObjRcs.Fields.Append "Town", adVarChar, 50  ' Specify length for text fields
    lcObjRcs.Fields.Append "State", adVarChar, 2  ' Length of 2 for state abbreviations
© www.soinside.com 2019 - 2024. All rights reserved.