アプリ版:「スタンプのみでお礼する」機能のリリースについて

access2003にて登録フォームを作成しています。
このフォーム内に入力したデータを登録ボタンを押し、「登録しますか」のメッセージに
「いいえ」とすれば保存せずにこのフォームを閉じる。
「キャンセル」とすれば保存せずにフォームに戻る。
「はい」とすれば保存して閉じたいです。

しかし、以下の式を実行すると
「いいえ」はバッチリ希望通りに動くのですが、
「キャンセル」をすると保存されてフォームに戻り、
「はい」とすると保存されずにフォームが閉じられてしまいます。

何がまずいのでしょうか・・・。

-----

Private Sub Form_BeforeUpdate(Cancel As Integer)


Dim Ret As Integer
Ret = MsgBox("登録しますか?" & vbCrLf & " " & vbCrLf & "「いいえ」を選択すると保存せず閉じます", vbYesNoCancel)

'「いいえ」を選択したら、保存せずに閉じる

If Ret = vbNo Then
DoCmd.Close acForm, "振返りデータ", acSaveNo


'「キャンセル」を選択したら、保存せずにフォームに戻る

Else

If Ret = vbCancel Then


Else

DoCmd.Close acForm, "振返りデータ", acSaveYes

End If
End If
End Sub

A 回答 (1件)

acSaveYes の意味は、フォームの変更をメッセージ無しで保存する、ということですよ。


入力したデータを登録するのとは、全然関係ないオプションです。
典型的には、並べ替えの順序を保存しておくとか、フィルターを保存しておくとか、そんなことに使うのではないでしょうか。

このコードでは BeforeUpdate イベントでフォームを閉じることになっていますから、レコードが保存される前に、フォームが閉じるのは、正常にコードが走っていることになると思います。

入力したデータを保存するなら、私なら、非連結のフォームを作って、「登録する」を押したら、そのフォームに記入された数値をVBAのプロシージャで所定のテーブルに書き写していく、というふうにします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!