- ベストアンサー
Access 更新キャンセルするには?
Access2000で作成しています。 フォーム上でデータを書き換え後、更新をしない場合はどうしたらよいのでしょうか? 【希望する流れ】 1.データを変更 2.「更新」ボタンクリック 「データの更新をします。よろしいですか?」のメッセージ (1)更新する場合:データを更新 「データが更新されました」のメッセージ (2)更新しない場合:データを変更前に戻す 「データの更新がキャンセルされました」のメッセージ 3.フォームを閉じる 4.別のフォームを開く この動作をフォーム上にある「更新」ボタンのクリック時イベントにすることはできますか? とりあえず、現在は以下のようなものが作ってあります。 「VBA」 Private Sub Form_BeforeUpdate(Cancel As Integer) '更新前確認 If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then Cancel = True Me.Undo End If End Sub 「更新」ボタンクリック時(こちらはマクロです) ・フォームを閉じる ・別のフォームを開く 今の状況では、更新する場合は問題ないのですが、更新しない場合、 「このレコードを保存することができません。 レコードを保存する時にエラーが発生しました。 ・・・・・・・・・・・」 というメッセージが出てきてしまいます。 どのようにVBAを作ればよいでしょうか? 説明不足の場合、補足いたします。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub Form_BeforeUpdate(Cancel As Integer) '更新前確認 If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then Me.Undo MsgBox "データの更新がキャンセルされました" End If End Sub でどうでしょう?
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 1つのやり方ですが。 フォームをテーブルと非連結で作ります。フォーム上の入力用テキストボックスなども全部自分で置きます。 フォームの下のほうにあるレコード移動関連のボタンも非表示にし、自分でコマンドボタンを作り、処理を書きます。 それで、データはレコードセットを作成してその都度表示させます。 そして、更新ボタンのイベントにレコードセットの更新処理を書きます。 全部自分で作るのが面倒ですが。 では。
お礼
ご回答ありがとうございました。 まだまだ勉強不足でわからない事だらけです。 今後教えていただいた方法もできるように頑張りたいと思います。
補足
こんにちは。お世話になります。 回答いただいた方法なのですが、一応、もう一つフォームを作り、 試したものがあるのですが、下記のようなことでよいのでしょうか? (更新のフォームを開くためにフィルタをかけています) Private Sub 更新_Click() On Error GoTo Err_更新_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "F_データ更新" stLinkCriteria = "[更新先]=" & "'" & Me![更新先名] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Dim rec As New ADODB.Recordset rec.Open "Q_情報", CurrentProject.Connection, adOpenKeyset フォームのテキストボックスの名前 = rec.Fields.Item("フィールド名") ・・・(テキストボックス分) rec.Close ・・・(エラー時処理等) End Sub としたものを作ってあるのですが、 「指定した式で参照されている"|"フィールドが見つかりません」 というエラーが出てきてしまいます。 全くの初心者なのでHPや本を見ながら試しているのですが、 そもそも…が良くわかっていないのでどこがどう違うのか 見当がつきません。 やはり、質問の方法ではできないのでしょうか?
お礼
回答ありがとうございます。お世話になります。 Cancel = Trueをとり、MsgBox追加した所・・・できました! 「Cancel = True」が何故必要ないのでしょう?(勉強します…) このデータベースを作るのが、初Access挑戦で、Accessのことも VBAのことも全くわからず、、、 本当にありがとうございました。助かりました。