ASP错误:多步操作产生错误。检查每个状态值。 (所需对象)

时间:2013-08-03 14:23:25

标签: mysql asp-classic vbscript

我在ASP中的旧网站开始产生此错误:

Microsoft Cursor Engine error '80040e21'
Multiple-step operation generated errors. Check each status value.

我最近没有改变任何东西 - 也许我的托管服务提供商进行了更改,但错误指向这行代码:

rs.Open SQL, adoCon

我查了一下:rs,adoCon和SQL都已经设置完毕,之前已经使用了很多年。

Set rs = Server.CreateObject("ADODB.Recordset")
adoCon.Open  "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=<SERVER_NAME>; PORT=<PORT_NUMBER>;" &_
                    "DATABASE=<DBNAME>; USER=<USERNAME>; PASSWORD=<PASS>; OPTION=3;"

SQL是正确的 - 我直接将其注入mySQL Web界面,并生成了所需的结果。

当我在ASP中处理此错误时,Error.Description会打印

"Object required"

抱怨什么?

2 个答案:

答案 0 :(得分:1)

我的问题的答案是我必须将十进制字段转换为字符串。解决方案看起来像这样:

SELECT Convert(Price,char) as Price FROM Table;

这很奇怪但是我的托管服务提供商网站上的某些内容可能会因此而导致此问题发生变化。我实际上在这里找到了类似的解决方案(strange mysql results in asp),这有助于我发现问题。正如我从上面的链接引用的“ASP无法识别MySQL的结果并认为它是EOF”而没有从十进制到字符串的转换。

答案 1 :(得分:0)

对我而言,它发生在几年前,Oracle的日期/时间字段在尝试选择时会导致严重错误。

猜猜幕后是同样的问题,对我有用的是使用Oracle工具手动删除损坏的行。

另一个工作机会很小的提示是使用这样的代码:

adoCon.Open  "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=<SERVER_NAME>; PORT=<PORT_NUMBER>;" &_
                "DATABASE=<DBNAME>; USER=<USERNAME>; PASSWORD=<PASS>; OPTION=3;"
Set rs = adoCon.Execute(SQL)

希望此方法中使用的游标不会崩溃。