Обновление / добавление записи в таблицу только при ответе на вопрос? - PullRequest
1 голос
/ 28 октября 2019

Я настраиваю базу данных в MS Access 2013 и хочу спросить пользователя «да / нет», если он хочет сохранить или отбросить свою несохраненную запись или редактировать перед тем, как уйти от текущей записи в моей форме доступа,

Пользователь не должен встречаться с вопросом при нажатии кнопок «добавить запись» или «сохранить».

Может кто-нибудь указать, где находится мой проблемный код / ​​или что мне нужно?

Кроме того, я новичок в 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

Используя приведенный выше код, "хотите прервать?"запрашивается всякий раз, когда пользователь пытается отойти от текущей записи + при нажатии кнопок «добавить запись» или «сохранить». Если пользователь ответит «Нет», запись будет сохранена, и соответствующее действие будет выполнено, за исключением кнопки «добавить запись», которая, кажется, только сейчас сохраняет, но не добавляет новую запись.

1 Ответ

1 голос
/ 28 октября 2019

Мне кажется немного запутанным. Попробуйте с:

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
...