ADO错误“当前记录集不支持更新。这可能是提供程序或所选锁定类型的限制。”

时间:2009-07-06 16:55:52

标签: asp-classic

我正在使用我从数据库中获取的数据集进行一些计算。空值会产生错误,所以我尝试用零(0)替换空值。这是我得到的错误,

  

ADODB.Recordset错误'800a0cb3'

     

当前Recordset不支持   更新。这可能是一个限制   提供者或所选择的提供者   锁定类型。

之前从未见过。这是我的代码。

If IsNull(objRevenueToday("REVENUE")) Then
    objRevenueToday("REVENUE") = 0
End If

5 个答案:

答案 0 :(得分:2)

您的记录集似乎是只读的。这可能有很多原因;您正在阅读包含Group By子句的视图,您没有权限等。

答案 1 :(得分:1)

使用语法Set Recordset = Command.Execute始终打开只读光标。您需要做的是使用Recordset对象打开光标。 Source方法的Open参数是您的Command对象。这允许您设置所需的位置和锁定类型。

Dim cmdProc as ADODB.Command
Dim rsData as ADODB.Recordset

Set cmdProc = New ADODB.Command
With cmdProc
Set .ActiveConnection = SomeConnection
.CommandType = adCmdStoredProc
.CommandText = "selCustomer"
' ... Create parameters
End With

Set rsData as New ADODB.Recordset
rsData.Open cmdProc,, adOpenStatic,adLockBatchOptimistic 
'...Process recordset data.

答案 2 :(得分:0)

以下是解决方案:

If IsNull(objRevenueToday("REVENUE")) Then
RevenueToday = "0"
Else
RevenueToday = objRevenueToday("REVENUE")
End If

不太理想但修正了我的错误。

答案 3 :(得分:0)

假设SQL Server(尽管其他数据库中提供了类似的技术。

更改查询,以便不会在记录中返回空值。例如在T-SQL

 SELECT ISNULL(REVENUE, 0), .... FROM ....

答案 4 :(得分:0)

如下更改设置。它强制客户端光标......它对我有用

set pagedlistrs=CreateObject("adodb.recordset")
pagedlistrs.cursorlocation = 3 ' adUseClientpagedlistrs
pagedlistrs.Open SQL, objConn, 3,3,1