0

我将以下 sql 用于针对 VB6 中的 SQLServer 后端的 ADO 记录集:

select c.name, taxid=
   case when exists(select 1 from sometable where fld='abc') 
   then c.SSN else null end

当我尝试在本地更新记录集中的一行中的出租车字段时,ADO 抱怨错误“多步操作生成错误。检查每个状态值。” 我认为taxid 字段来自计算字段而不是原始表列这一事实困扰了它。出于我的目的,我永远不会将这些更改持久化回数据库,因此我正在寻找一种方法来告诉 ADO 无意持久化更改,以便它允许我在本地更改数据。

4

1 回答 1

1

我认为@HK1 的建议是一个很好的建议,尽管我不确定您更改记录集中任何值的能力会发生什么变化,无论您尝试更新的列是否已计算。自从我玩经典 ADO 以来已经有很长时间了,但如果记录集断开连接,它可能会在那时变为只读状态。

但是,如果您对使用记录集执行更新不感兴趣,并且需要在本地更改值,也许您应该考虑先将结果存储在本地数组中?例如,这样您可以最​​小化记录集的锁定和游标选项,并立即关闭记录集并释放这些资源。

rs.Open cmd, conn, adOpenForwardOnly, adLockReadOnly

Dim MyArray
MyArray = rs.GetRows()

rs.Close: set rs = nothing

现在你可以随心所欲地操作MyArray......

于 2012-04-24T03:21:08.413 回答