0

对于像我这样的新手来说,我一直在网上冲浪,寻找我认为这是一个非常简单的问题的答案。但还没有找到任何答案,所以我在这里!为了简单起见,我将附上我的代码中让我有点头疼的两段代码。我打算做的是通过单击按钮从只读模式切换到允许写入状态。为此,我希望例程检查记录上的更改,如果有任何要求用户决定是保存更改还是丢弃它们。在测试这个特定按钮时,我发现了一些非常“好笑”.. 当没有引入任何更改时,它似乎运作良好。从只读状态完美切换到允许写状态。但是,在允许写入并进行更改时,如果“保存选项”

我的另一个与此密切相关的问题是我找不到为撤消选项设置“保存点”的方法。我想找到一种“保存记录”的方法,因此当按下撤消按钮时,不会撤消自数据库首次打开以来记录所遭受的所有更改(正如它目前正在发生的那样),但由于按钮已经按下。我尝试了 DoCmd Save 功能,但没有像我预期的那样表现(注意:最后一个“else”是我最后一次尝试解决这个问题,但它再次没有按预期工作)

非常感谢您未来的合作,

亚历克斯

Private Sub Command28_Click()
    If Form_AODNewRecord.AllowAdditions = True Then
        Call isModified_Save

        Form_AODNewRecord.AllowAdditions = False
        Form_AODNewRecord.AllowEdits = False
        Form_AODNewRecord.AllowDeletions = False
        MsgBox "Read Only. Addition, Edits and Deletions are now locked"
        Command28.Caption = "LOCKED"
    Else
        Form_AODNewRecord.AllowAdditions = True
        Form_AODNewRecord.AllowEdits = True
        Form_AODNewRecord.AllowDeletions = True
        MsgBox "New records, edits and deletions are now allowed"
        Command28.Caption = "Lock mode OFF"
    End If

    MsgBox Form_AODNewRecord.AllowAdditions
End Sub

Sub isModified_Save()
    If Form_AODNewRecord.Dirty Then
        Dim strMsg As String, strTitle As String
        strMsg = "You have edited this record. Do you want to save the changes?"
        strTitle = "Save Record?"
        If MsgBox(strMsg, vbQuestion + vbYesNo, strTitle) = vbNo Then
            Me.Undo
        Else
            DoCmd.OpenTable "AOD Type", acViewPreview, acReadOnly
            DoCmd.Save acTable, "AOD Type"
            DoCmd.Close acTable, "AOD Type", acSaveYes

        End If
    End If

End Sub
4

1 回答 1

0

我想你想要下面的代码。您无法打开表单绑定到的表并影响表单,当您打开表时,您有两个不同的实例,它们不会相互影响。

在 Office 应用程序中运行宏的一个奇怪的副作用是它会清除撤消列表,所以我创建了一个小宏,它只显示一条消息“撤消已清除”,这正是它的作用!

顺便说一句,用有意义的名称重命名您的控件,例如 cmdLock,而不是 Command28,稍后您会感谢自己。

Private Sub Command28_Click()
    If Me.AllowAdditions = True Then
        Call isModified_Save

        Me.AllowAdditions = False
        Me.AllowEdits = False
        Me.AllowDeletions = False
        MsgBox "Read Only. Addition, Edits and Deletions are now locked"
        Command28.Caption = "LOCKED"
    Else
        Me.AllowAdditions = True
        Me.AllowEdits = True
        Me.AllowDeletions = True
        MsgBox "New records, edits and deletions are now allowed"
        Command28.Caption = "Lock mode OFF"
    End If

    ''MsgBox Me.AllowAdditions
End Sub

Sub isModified_Save()
    If Me.Dirty Then
        Dim strMsg As String, strTitle As String
        strMsg = "You have edited this record. Do you want to save the changes?"
        strTitle = "Save Record?"
        If MsgBox(strMsg, vbQuestion + vbYesNo, strTitle) = vbNo Then
            Me.Undo
        Else
            ''Save record
            Me.Dirty = False
            ''Clear undo list
            DoCmd.RunMacro "ClearUndo"
        End If
    End If

End Sub
于 2013-02-21T12:47:37.540 回答