更新无法在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
”。
感谢保罗的回答!更改'CursorLocation'后,我无法打开窗体......当我回到'adUseClient'时,一切正常。我不知道为什么。我读过'LockType',我甚至改为'asLockOptymistic',但仍然存在与更新相同的问题。当我尝试使用UpdateBatch代码想要更改整行与自动数字列,我有错误窗口的文本“你不能更新ID列......”更新:当我使用更新也是同样的错误:“你不能更新ID栏......“:( – kurman