我正在使用我从数据库中获取的数据集进行一些计算。空值会产生错误,所以我尝试用零(0)替换空值。这是我得到的错误,
ADODB.Recordset错误'800a0cb3'
当前Recordset不支持 更新。这可能是一个限制 提供者或所选择的提供者 锁定类型。
之前从未见过。这是我的代码。
If IsNull(objRevenueToday("REVENUE")) Then
objRevenueToday("REVENUE") = 0
End If
答案 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