【发布时间】:2012-04-23 19:40:20
【问题描述】:
我在 VB6 中针对 SQLServer 后端对 ADO 记录集使用以下 sql:
select c.name, taxid=
case when exists(select 1 from sometable where fld='abc')
then c.SSN else null end
当我尝试在本地更新记录集中的一行中的taxid 字段时,ADO 抱怨错误“多步操作生成错误。检查每个状态值。”我认为taxid字段来自计算字段而不是原始表列的事实困扰了它。出于我的目的,我永远不会将这些更改持久化回数据库,因此我正在寻找一种方法来告诉 ADO 无意持久化更改,以便允许我在本地更改数据。
【问题讨论】:
-
我预计会出现错误,因为出租车不是真正的专栏。当输出为
taxid = c.name + c.SSN时出现同样的错误。就个人而言,我不会使用 VB6 中的记录集将更新持久化回数据库,而是使用存储过程并将参数化调用发送到该存储过程。当然,该过程需要编写为只允许可更新列的输入。不知道有没有办法让 ADO 遵守底层定义。 -
thx @Aaron 但我不会将更新持久化回数据库。我只是想根据本地需要更改记录集中的值。有没有办法配置记录集,这样 ADO 就不会“担心”永远不会发生的持久性问题?
-
您是否尝试过断开记录集?设置 rst.ActiveConnection = Nothing。
标签: sql-server vb6 ado recordset