更新在Access VBA - ADODB.Recordset中不起作用

时间:2016-02-12 10:02:57

标签: vba access-vba recordset

我尝试通过update参数更新记录集,代码运行良好,但更新记录仍然相同。

代码:

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 for my English :)非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

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

我认为你应该使用动态光标:“其他用户的添加,更改和删除都是可见的,并且允许通过Recordset进行所有类型的移动。”

请注意静态游标说明中的“复制”一词:您正在对副本进行更改,但副本不会保存在数据库中。

您还可能需要将CursorLocation属性更改为adUseServer:“如果CursorLocation属性设置为adUseClient,则CursorType属性的唯一有效设置为adOpenStatic”。

另请参阅:http://www.w3schools.com/asp/ado_ref_recordset.asp