更新无法在Access VBA中使用 - ADODB.Recordset

更新无法在Access VBA中使用 - ADODB.Recordset

问题描述:

我尝试更新记录集的更新参数和代码运行良好,但更新记录仍然相同。更新无法在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为我的英语:)并非常感谢任何帮助!

我看到您使用静态游标:“一组记录的静态副本,可用于查找数据或生成报告,其他用户的添加,更改或删除不可见。”

我认为你应该使用动态游标:“其他用户的添加,更改和删除是可见的,并且允许通过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