我使用下面的SQL針對一個SQLServer後端ADO記錄集在VB6:更新ADO記錄集計算字段
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是不是一個真正的列。輸出爲'taxid = c.name + c.SSN'時出現同樣的錯誤。就我個人而言,我不會在VB6中使用記錄集來將更新持久化回數據庫,而是使用存儲過程並將參數化調用發送到該存儲過程。當然,該過程需要寫入,以允許輸入可更新列。我不知道是否有辦法讓ADO服從底層定義。 – 2012-04-23 19:43:50
thx @Aaron但我沒有堅持更新回數據庫。我只是試圖改變記錄集中的值以滿足本地需求。有沒有辦法配置記錄集,以便ADO不會「擔心」永遠不會發生的持久性問題? – sisdog 2012-04-23 20:09:04
你試過斷開記錄集嗎?設置rst.ActiveConnection = Nothing。 – HK1 2012-04-24 00:34:49