错误'80040e21'多步操作产生错误

时间:2011-01-27 22:08:55

标签: sql asp-classic

我有一个发布到SQL Server 2008数据库的页面,我收到以下错误。

Microsoft Cursor Engine错误'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个单独的页面上正常工作吗?

1 个答案:

答案 0 :(得分:1)

我通常这样做:

rsOrder.Open "select * from Orders where orderid=0", cnn, 1,2
rsOrder.AddNew
rsOrder("orderCustId") = trim(iCustID)
rsOrder("orderPayId") = trim(iPayID)
rsOrder("orderAddrId") = trim(iAddrID)
rsOrder("orderDate") = Now
rsOrder("orderIsComplete") = 1
rsOrder.Update 
iOrderID=rsOrder("iOrderID")
rsOrder.close

然后我会运行看起来很好的第二部分。

相关问题