仅在回答问题时才将表项更新/添加到表中?

问题描述 投票:1回答:1

我正在MS Access 2013中建立数据库,并想问用户是否要保存或丢弃其未保存的记录或进行编辑,然后再从Access窗体中移出当前记录。

如果按下“添加记录”或“保存”按钮,则用户不会遇到这个问题。

有人可以指出我有问题的代码在哪里,或者我需要什么?

另外,我是Access的新手,所以请保持柔和。

我在网络上尝试了一些不同的指南或其他答案,但还没有完全达到我想要的位置。

我的代码就是这样(cbotxt_Change和Form_Load与表单的其他部分有关]

Private blnGood As Boolean

Option Compare Database

Private Sub cbotxt_Change()
    Me.txt1.Value = Me.test1.Column(2)
    Me.txt2.Value = Me.test1.Column(3)
    Me.txt3.Value = Me.test1.Column(4)
End Sub

Private Sub Form_Load()
    DoCmd.GoToRecord , , acNewRec
End Sub

Private Sub button_addRecord_Click()
    blnGood = True
    DoCmd.GoToRecord , , acNewRec
    blnGood = False
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim strMsg As String

    If Not blnGood Then
        strMsg = "want to abort?"
        If MsgBox(strMsg, vbYesNo + vbQuestion, "Yes") = vbYes Then
            Me.Undo
        Else
            Yes = True
        End If
    End If
End Sub

使用上面的代码“是否要中止?”每当用户试图从当前记录导航离开时,以及在按下“添加记录”或“保存”按钮时,都会询问。如果用户回答“否”,则将保存该条目并执行有问题的操作,但“添加记录”按钮除外,该按钮现在似乎只保存了,不添加新记录。

vba ms-access access-vba ms-access-2013
1个回答
1
投票

似乎让我有些困惑。尝试:

Private Sub button_addRecord_Click()
    DoCmd.GoToRecord , , acNewRec
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)

    Dim strMsg As String

    strMsg = "want to abort?"

    If MsgBox(strMsg, vbYesNo + vbQuestion, "New Entry") = vbYes Then
        Cancel = True
        Me.Undo   ' or let the user press Escape.
    End If

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.