【发布时间】:2011-01-28 06:21:17
【问题描述】:
我有一个发布到 SQL Server 2008 数据库的页面,但出现以下错误。
Microsoft 光标引擎错误“80040e21”
多步操作产生错误。检查每个状态值。
/incConfirm.asp,第 429 行
代码将数据发布到表中,然后重新查询以获取和订购 ID,以便在将数据输入到第二个表中时使用。
在调试中我可以看到问题是由于订单ID没有被结转造成的。
代码如下所示(标有第 469 行)。
这是第一部分:
Set rsOrder = Server.CreateObject("ADODB.RecordSet")
rsOrder.CursorLocation = adUseClient
rsOrder.Open "Orders Order By orderID", cnn, adOpenDynamic, adLockOptimistic, adCmdTable
rsOrder.AddNew
rsOrder.Fields("orderCustId") = trim(iCustID)
rsOrder.Fields("orderPayId") = trim(iPayID)
rsOrder.Fields("orderAddrId") = trim(iAddrID)
rsOrder.Fields("orderDate") = Now
rsOrder.Fields("orderIsComplete") = 1
rsOrder.Update
bookMark = rsOrder.AbsolutePosition
rsOrder.Requery
rsOrder.AbsolutePosition = bookMark
iOrderID = rsOrder.Fields("orderID")
closeobj(rsOrder)
End Function
这是第二个(包含第 469 行):
Set rsOrderDetail = Server.CreateObject("ADODB.RecordSet")
rsOrderDetail.CursorLocation = adUseClient
rsOrderDetail.Open "OrderDetails Order By detailID", cnn, adOpenDynamic, adLockOptimistic, adCmdTable
rsOrderDetail.AddNew
rsOrderDetail.Fields("odrdtOrderId") = trim(iOrderID) - LINE 469
如前所述,iOrderID 没有值,因此出现错误。令人费解的是,我使用这段代码已经有一段时间了,它在 2 个单独的页面上运行良好?
【问题讨论】:
-
iOrderID是全局变量,还是函数名?我问是因为第一个代码 sn-p 中有一个End Function,这会导致局部变量超出范围。如果它是一个全局变量,也许这个页面上有另一段代码覆盖了iOrderID中的值? -
不,它不是函数的名称。 sn-p 是函数的一部分(忘记取出最后一行)。
-
作为对最后一条评论的思考,我将更改变量的名称并尝试一下。
标签: sql asp-classic