Microsoft 光标引擎错误“80040e21”多步操作生成错误。检查每个状态值

Posted

技术标签:

【中文标题】Microsoft 光标引擎错误“80040e21”多步操作生成错误。检查每个状态值【英文标题】:Microsoft Cursor Engine error '80040e21' Multiple-step operation generated errors. Check each status value 【发布时间】:2016-09-25 17:39:08 【问题描述】:

我正在查看 90 年代用 VB6 和 Active Server Pages (JScript) 编写的旧 Web 应用程序。应用程序从数据库中检索一些数据并将其存储在用于更新的记录集中。当它尝试更新一个字段(见下文)时,它会给出一个“80040e21”错误。

rsSave.Fields('text') = Request.Form('strText').Item(i); // this line fails

我检查了字段的类型,它是 adVarWChar (202)。我已经检查了 2000 的“文本”字段的大小,比表单中的大小要大得多。我检查了所有字段的状态,它们都是 adFieldOK (0)。换句话说,任何通常给出此错误的常见嫌疑人都是可以的。

创建、填充然后返​​回记录集的 COM+ 对象正在执行以下操作:

 'Initialize command object
Set oCmd = CreateObject("ADODB.Command")

With oCmd
    .CommandType = adCmdText
    .CommandText = strsql
End With

Set cn = CreateObject("ADODB.Connection")

'Open connection to database
cn.Open strConn
oCmd.ActiveConnection = cn

Set rs = CreateObject("ADODB.Recordset")

     With rs
        Set .Source = oCmd
        .LockType = adLockBatchOptimistic
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .Open
        Set .ActiveConnection = Nothing
       End With

我尝试使用 adLockOptimistic,但没有成功。

最后但同样重要的是,该应用程序最初使用的是旧的 Microsoft OleDb 提供程序,用于 Oracle,不再与 Windows Server 2008 兼容。我们不得不使用新的提供程序,从那时起需要调整一些东西才能工作正确。

有什么想法吗?

【问题讨论】:

oCmd 对象呢? 它被进一步初始化。 Set oCmd = CreateObject("ADODB.Command") With oCmd .CommandType = adCmdText .CommandText = strsql End With 还有strsql (你能看到正在形成的模式吗...)?尽量不要在 cmets 中添加代码,只需 edit the question 并添加缺少的代码。 @Lankymart:strsql 是进一步定义的长查询。它工作得很好,因为它用数据填充记录集(我可以看到它包含什么,它不是 EOF)。当我尝试使用新值更新字段时会出现问题。 Getting "Multiple-step operation generated errors. Check each status value." error using ADO with SQL server 2008的可能重复 【参考方案1】:

当我使用 IBM OLE DB Provider 从 VB6 写入 DB2 数据库时,我曾经得到这些。它总是与数据与基础字段类型不兼容或内容太大有关。检查日期,字符串被写入整数,反之亦然,等等。

我会尝试一个消除过程。只写入一个字段的数据,将其他字段默认为您将接受的最小值,然后继续添加包含预期数据的字段,直到它触发错误。至少它会告诉你它是哪个字段。

抱歉,我没有更多可提供的。

【讨论】:

以上是关于Microsoft 光标引擎错误“80040e21”多步操作生成错误。检查每个状态值的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft SQL Server 2016 安装错误 - “等待数据库引擎恢复句柄失败”

经典 asp - ms 访问更新问题(Microsoft Jet 数据库引擎停止)

Microsoft jet 数据库引擎找不到表

宏 - 查询 - Microsoft Access 数据库引擎停止了进程

Microsoft Access 数据库引擎找不到输入表或查询

Microsoft以任何方式从光标到文件末尾选择? [关闭]