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

Win2000、Access2000を使用しています。
以下の作業をするためのVBを作成しているのですが、レコードの内容が変更されたかどうかを調べるためのコードとその他のコードとの組み立てがわからず困っています。
部分的にでもかまいませんので、おわかりになる方がいましたら教えてください。

1.フォーム上に作成した「戻るボタン」をクリックした時のイベントで、レコードの内容が変更されていたらメッセージボックスを表示する。
2.メッセージボックスの「はい」をクリックしたら、保存してフォームを閉じる。
3.メッセージボックスの「いいえ」をクリックしたら、変更されたフィールドの値を変更前の状態に戻してフォームを閉じる。

以上、よろしくお願いします。

A 回答 (3件)

ヒントだけ…


フォーム上の連結コントロールの値が変更されたかどうかを知るのは <oldvalue>プロパティを使用します。

If Me!コントロール名.value <> Me!コントロール名.oldvalue then …
と比較することで、変更されたかどうかを知ることが出来ます。
また
Me!コントロール名.value = Me!コントロール名.oldvalue
で、変更前の値に戻すこともできます。

詳細は参考URLやヘルプを参照して下さい。
では、頑張って下さい。

参考URL:http://homepage1.nifty.com/tsware/tips/tips_219. …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
参考URLで細かな解説があり、うまくいきました。

お礼日時:2003/12/03 17:56

更新フラグを立てるということをするのではないでしょうか。


Yes/No型の値を設定し、フォームを開いた時やレコード移動時はNoにし、新規入力や編集された時にYseにして、戻るや閉じるをしようとしたとき、もしYesだったら「更新されていますが保存しますか?」と訊くようにしていますよ。Noならなにも言いません。
で、そのようにするためにはフォームはテーブル等とは非連結にし、DBオブジェクトを操作する、という風にしなければなりません。AccessVBAの中では核心の部分だと思いますが、私はこのあたり「Access97Expert」という本で勉強しました。
ただし97と2000ではDBオブジェクトの扱いが変わっていますので要注意です。(DAO→ADO)

参考URL:http://www.amazon.co.jp/exec/obidos/ASIN/4797304 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
フォームとテーブルの連結を非連結にするのは、他にも作業があるため、ちょっと厳しいです。
今までDAO、ADOは、ちょっと抵抗があってなるべく使用しないようにしていたのですが、これからは避けずにチャレンジしてみようと思います。

お礼日時:2003/12/03 17:59

#2の方と似たような意見ですが、


非連結のチェックボックスを非表示で配置する。
全てのコントロールのAfterUpdateイベントでチェックボックスをTrueにするコードを挿入する。
フォームのBeforeUpdateイベントでチェックボックスがTrueの場合だけ動くコードを記述する。
フォームのAfterUpdateでチェックボックスをFalseにする。

この場合Undoされたときが問題になりそうです。
未実験です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
フォームのBeforeUpdate、AfterUpdateですね。
やってみます。

お礼日時:2003/12/03 18:11

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

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


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