为什么为 ADORecordset 中的字段赋值会引发错误?
Why is Assigning a value to a field in ADORecordset throwing an error?
所以我正在测试示例代码,并将一些在线文本粘贴到一个字段中,但出现错误,我不知道为什么。这是抛出错误的整个方法:
EDIT the error is coming from the assignment. However, there is no
error thrown on any number of other input strings.
CurNodeName = RTrim(CurNodeName)
ADORecordset.Fields.Append CurNodeName, adVarChar, 500, adFldMayBeNull
tempString = XMLValueDecode(CurNodeValue)
ADORecordset.Fields(CurNodeName).Value = tempString
...
这是传递给方法的字符串:
Most of the methods of the DoCmd object have arguments ? some are
required, while others are optional. If you omit optional arguments,
the arguments assume the default values for the particular method. For
example, the OpenForm method uses seven arguments, but only the first
argument, FormName, is required. The following example shows how you
can open the Employees form in the current database. Only employees
with the title Sales Representative are included.
这里是准确的错误描述:
Multiple-step operation generated errors. Check each status value.
这就是整个故事,我就是不明白。你能告诉我为什么会出现这个错误吗?
你检查过 curNodeName
类型了吗?如果您已经传递了一个数字类型来追加,它可能会在命名字段时将其隐式转换为字符串以避免索引错误,如果是这种情况,(并且您无意中试图将该字符串分配给一个字段的值当前不在集合中的索引,)您可能会抛出该多重错误,因为您试图将长度超过默认长度的字符串分配给索引方式超出当前集合的字段(无论是which error alone might throw a specific exception,但取决于解析器处理这些术语的方式,它可能会在尝试分配错误代码之前评估分配的每一方的有效性。)
我想知道的是,您是否 debug.printed(或只是计算,取决于集合大小)字段名称和索引作为匹配对,并尝试通过索引而不是通过索引将字符串分配给您的字段姓名?
(从评论到另一个答案:)
There must be some critical difference between adVarChar type and adVarWChar that the text being set responded differently to.
许多版本之前(Access 2000 和 Jet 4.0 的发布)Access 中的 Text
和 Memo
字段已升级为处理 Unicode。从那时起,Text
字段和参数需要引用为 adVarWChar
(最大长度为 255),而 Memo
字段和参数需要引用为 adVarWChar
或 adLongVarWChar
(理论大小限制约为 10 亿个字符)。
不清楚为什么问题中的代码适用于某些字符串而不适用于其他字符串,但使用正确的 ("W") 数据类型肯定是先决条件。
所以我正在测试示例代码,并将一些在线文本粘贴到一个字段中,但出现错误,我不知道为什么。这是抛出错误的整个方法:
EDIT the error is coming from the assignment. However, there is no error thrown on any number of other input strings.
CurNodeName = RTrim(CurNodeName)
ADORecordset.Fields.Append CurNodeName, adVarChar, 500, adFldMayBeNull
tempString = XMLValueDecode(CurNodeValue)
ADORecordset.Fields(CurNodeName).Value = tempString
...
这是传递给方法的字符串:
Most of the methods of the DoCmd object have arguments ? some are required, while others are optional. If you omit optional arguments, the arguments assume the default values for the particular method. For example, the OpenForm method uses seven arguments, but only the first argument, FormName, is required. The following example shows how you can open the Employees form in the current database. Only employees with the title Sales Representative are included.
这里是准确的错误描述:
Multiple-step operation generated errors. Check each status value.
这就是整个故事,我就是不明白。你能告诉我为什么会出现这个错误吗?
你检查过 curNodeName
类型了吗?如果您已经传递了一个数字类型来追加,它可能会在命名字段时将其隐式转换为字符串以避免索引错误,如果是这种情况,(并且您无意中试图将该字符串分配给一个字段的值当前不在集合中的索引,)您可能会抛出该多重错误,因为您试图将长度超过默认长度的字符串分配给索引方式超出当前集合的字段(无论是which error alone might throw a specific exception,但取决于解析器处理这些术语的方式,它可能会在尝试分配错误代码之前评估分配的每一方的有效性。)
我想知道的是,您是否 debug.printed(或只是计算,取决于集合大小)字段名称和索引作为匹配对,并尝试通过索引而不是通过索引将字符串分配给您的字段姓名?
(从评论到另一个答案:)
There must be some critical difference between adVarChar type and adVarWChar that the text being set responded differently to.
许多版本之前(Access 2000 和 Jet 4.0 的发布)Access 中的 Text
和 Memo
字段已升级为处理 Unicode。从那时起,Text
字段和参数需要引用为 adVarWChar
(最大长度为 255),而 Memo
字段和参数需要引用为 adVarWChar
或 adLongVarWChar
(理论大小限制约为 10 亿个字符)。
不清楚为什么问题中的代码适用于某些字符串而不适用于其他字符串,但使用正确的 ("W") 数据类型肯定是先决条件。