我在VB6中使用以下sql作为针对SQLServer后端的ADO记录集:
select c.name, taxid=
case when exists(select 1 from sometable where fld='abc')
then c.SSN else null end
当我尝试更新记录集中的一行中的taxid字段时,ADO会抱怨错误“多步操作生成错误。请检查每个状态值”。我认为由于出租车字段来自计算字段而不是原始表列而受到打扰。出于我的目的,我永远不会将这些更改持久化回数据库,因此我正在寻找一种方法来告诉ADO无意保留更改,以便它允许我在本地更改数据。
答案 0 :(得分:1)
我认为@ HK1的建议很好,但我不确定你能否改变记录集中的任何值,无论你要更新的列是否被计算。自从我使用经典ADO以来已经很长时间了,但如果记录集断开连接,它可能会在那时只读。
但是如果你没有兴趣使用记录集来执行更新,并且你需要在本地更改值,那么你应该考虑先将结果存储在本地数组中吗?这样,您可以最小化记录集的锁定和游标选项,例如,立即关闭记录集并释放这些资源。
rs.Open cmd, conn, adOpenForwardOnly, adLockReadOnly
Dim MyArray
MyArray = rs.GetRows()
rs.Close: set rs = nothing
现在你可以随心所欲地操纵MyArray
......