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

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を作ればよいでしょうか?
説明不足の場合、補足いたします。よろしくお願いします。

A 回答 (2件)

Private Sub Form_BeforeUpdate(Cancel As Integer)


 '更新前確認
  If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then
Me.Undo
MsgBox "データの更新がキャンセルされました"

  End If
End Sub

でどうでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。お世話になります。

Cancel = Trueをとり、MsgBox追加した所・・・できました!
「Cancel = True」が何故必要ないのでしょう?(勉強します…)
このデータベースを作るのが、初Access挑戦で、Accessのことも
VBAのことも全くわからず、、、

本当にありがとうございました。助かりました。

お礼日時:2002/04/20 06:02

こんにちは。

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や本を見ながら試しているのですが、
そもそも…が良くわかっていないのでどこがどう違うのか
見当がつきません。

やはり、質問の方法ではできないのでしょうか?

補足日時:2002/04/19 10:29
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
まだまだ勉強不足でわからない事だらけです。
今後教えていただいた方法もできるように頑張りたいと思います。

お礼日時:2002/04/21 12:41

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A