2016-02-12 82 views
0

我嘗試更新記錄集的更新參數和代碼運行良好,但更新記錄仍然相同。更新無法在Access VBA中使用 - ADODB.Recordset

代碼:

With mMails 
    .LEVEL1 = cTagLevel1 
    .MAIN_TAG = cTagLevel2 
    .DETAILED_TAG = cTagLevel3 
    .FIELD_TAG = cTagField 
    .INSIGHT = cTagInsight 
    .BRANCH = cTagBranch 
    .DataSource.Commit 
End With 

,並承諾分:

Public Sub Commit() 
    mRst.Update 
End Sub 

和連接:

Set mRst = New ADODB.Recordset 
Set mRst.SOURCE = pCmd 
mRst.CursorLocation = adUseClient 
mRst.CursorType = adOpenStatic 
mRst.LockType = adLockBatchOptimistic 
mRst.Open 
If Not (pAccessMode = AccessMode_ReadOnly) Then 
    Set mCn = pCmd.ActiveConnection 
End If 
Set mRst.ActiveConnection = Nothing 

與mMails所有的值都是正確的,但更新不工作。我做錯了什麼?當我嘗試使用UpdateBatch的更新想要更改整行,不僅選擇...

Sry爲我的英語:)並非常感謝任何幫助!

回答

0

我看到您使用靜態遊標:「一組記錄的靜態副本,可用於查找數據或生成報告,其他用戶的添加,更改或刪除不可見。」

我認爲你應該使用動態遊標:「其他用戶的添加,更改和刪除是可見的,並且允許通過Recordset的所有類型的移動。」

請注意靜態遊標描述中的單詞「複製」:您正在對副本進行更改,但副本未保存在數據庫中。

您可能還需要到CursorLocation屬性更改爲adUseServer:「如果CursorLocation屬性被設置爲adUseClient,爲CursorType財產的唯一有效設置爲adOpenStatic」。

另請參閱:http://www.w3schools.com/asp/ado_ref_recordset.asp

+0

感謝保羅的回答!更改'CursorLocation'後,我無法打開窗體......當我回到'adUseClient'時,一切正常。我不知道爲什麼。我讀過'LockType',我甚至改爲'asLockOptymistic',但仍然存在與更新相同的問題。當我嘗試使用UpdateBatch代碼想要更改整行與自動數字列,我有錯誤窗口的文本「你不能更新ID列......」更新:當我使用更新也是同樣的錯誤:「你不能更新ID欄......「:( – kurman