4

このようなレコードを(フォーム内に)保存する[保存して新規開く]ボタンをクリックしているときに、ポップアップメッセージボックスを作成したいと思います。

このレコードを保存してもよろしいですか?はい・いいえ

そして、レコードが保存されている場合は、別のメッセージボックスを取得したいと思います。だからこのように:レコードが保存されました。

4

1 に答える 1

10

ここにコマンドボタンがどのように収まるのかわかりません。バインドされたフォームについて話している場合は、ユーザーが別のレコードに移動するときに発生する自動保存操作をインターセプトすることをお勧めします。それがあなたの状況である場合は、フォームの更新前イベントでユーザーに尋ねることができます。

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Const cstrPrompt As String = _
        "Are you sure you want to save this record? Yes/No"
    If MsgBox(cstrPrompt, vbQuestion + vbYesNo) = vbNo Then
        Cancel = True
    End If
End Sub

ユーザーが[いいえ]をクリックすると、更新はキャンセルされ、同じレコードに残り、そのレコードに別の変更を加えるか、変更を加えることができなくなります。代わりに保留中の変更を破棄したい場合は、Me.Undoその手順に追加してください。

フォームの更新後イベントを使用して、「レコードが保存されました」というメッセージを表示できます。

必要に応じて、フォームの挿入前と挿入後のイベントについても同様のことができます。

あなたの質問の更新に基づいて、私はあなたがこのようなものを探していると思います:

Private Sub cmdSaveAndNew_Click()
    Const cstrPrompt As String = _
        "Are you sure you want to save this record? Yes/No"
    If MsgBox(cstrPrompt, vbQuestion + vbYesNo) = vbYes Then
        If Me.Dirty Then
            Me.Dirty = False ' save the record
        End If
        DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    End If
End Sub

ユーザーがコマンドボタンを使用せずに別のレコードに移動した場合、またはユーザーが未保存の変更でフォームを閉じた場合、現在のレコードへの変更を保存する前に確認を求めることができないことを忘れないでください。現在の記録。

于 2012-11-13T18:12:30.490 に答える