プロが教えるわが家の防犯対策術!

普通ならアイコンを使って上書き保存という作業で出来るわけですが、あえて更新ボタンというのを作ってそのボタンを押すと更新するか、更新しないか、キャンセルのという形のメニューにしたいのですが・・・(ただ更新しなければそのフォームを閉じる形でキャンセルはエスケープ(現段階の状況)みたいなものにしたい)分かる人いましたらご教授お願いします。

A 回答 (8件)

こんな感じに、IF文で条件分岐すればいいような気がします。



Private Sub コマンド3_Click()
On Error GoTo Err_コマンド3_Click
  
  'データが変更されていない場合
  If Me.Dirty = False Then
    MsgBox "データを入力してから押してね"
    Me.TXT.SetFocus '「TXT」って名前のテキストボックスにフォーカスをセットしてます
  
  '変更されている場合
  Else
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
  End If

Exit_コマンド3_Click:
  Exit Sub

Err_コマンド3_Click:
  
  Resume Exit_コマンド3_Click
  
End Sub

ボタンの名前とかは適当に読み替えてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。毎回毎回お世話になっております。さすがに私もここまでの知識すらないので知識を知っている人たちには本当に脱帽です。ありがとうございます。

お礼日時:2003/12/12 00:57

コントロールウィザードのボタンが凹んでいる状態で、フォームにボタンを貼り付けます。


んで、レコードの操作→レコードの保存
を選んでください。
ウィザードの残りの部分は適当でいいんですが、出来あがった後でボタンの「クリック時」のイベントプロシージャを編集し、
MsgBox Err.Description
となっている一行を削除してください。

これにより、レコード保存の動作に連動して、先のコードが実行されるようになります。

こんな感じで宜しいでしょうか?
不明点とかあれば補足してくださいませ。

この回答への補足

出来ました。ありがとうございます。あと補足としてお願いなのですが、レコードに何も入れていない状態でこのボタンを押すと保存できない旨のメッセージを出してカーソルを所定の場所に戻せたらいいのですが・・・
それと今統計を取っているのですがその質問を新しく載せたのでもしそちらの方もお分かりでしたらお教え願えませんか?お願いします。

補足日時:2003/12/08 23:42
    • good
    • 0

>質問なんですがこれはキャンセルを押すとフォームが閉じるということはないでしょうか?



違いますよ。
「キャンセル」は、単純に更新処理をキャンセルするだけ、です。(入力内容はそのままです。)
「はい」は普通に更新処理を行って、「いいえ」は更新をキャンセルし、かつ、そのレコードの変更をリセットします。

まぁ、実際に動かしてみたら、動きとか判ると思うんですが…
もし実装方法とかが不明でしたら、補足してください。

この回答への補足

しばらく回答できない状態が続きまして申し訳ございません。えとフォームにボタンを作って更新のボタンを作って更新するかしないかの判定は出来ないのでしょうか?

補足日時:2003/12/08 22:16
    • good
    • 0

んじゃぁ、こんな感じですね。


キャンセルを押下したとき、保存はしないもののデータの回復も行いません。

Private Sub Form_BeforeUpdate(Cancel As Integer)
  Dim Msg As String
  Msg = "このデータ、更新する?"
  Select Case MsgBox(Msg, vbYesNoCancel + vbDefaultButton3, "更新の確認")
  Case vbYes
    '「はい」の時は更新続行
  Case vbNo
    '「いいえ」
    Me.Undo     '更新前の状態に戻す。
    Cancel = True '更新をキャンセルする
  vbCancel
    '「キャンセル」
  Cancel = True '更新をキャンセルするだけ
  End Select
End Sub

この回答への補足

質問なんですがこれはキャンセルを押すとフォームが閉じるということはないでしょうか?

補足日時:2003/11/09 23:19
    • good
    • 0

>「保存するかどうかは不明だけど画面はそのままで現状データのまま」というやつをつけたいんですが・・・。



変数を宣言してそこへコピーをおいておいてはどうですか?

で、キャンセルした時に、その値をフォームのtextboxに戻すと。。
    • good
    • 0

#1です。



>連結フォームだとダメですね。

間違っていました。m(__)m


#2さん、ご紹介のページの方法でいけます。
    • good
    • 0

ちょい前に同様の質問に回答いたしましたので、そちらの方もご参照くださいまし~


(ちなみに混乱されるといけないので書き添えておきますと、連結フォームであることが前提での回答です。)

質問などあれば、どうぞ~

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=660718

この回答への補足

質問が遅れてしまって申し訳ございません。確かに連結フォームでやるのですが、前のときははいといいえで分けていたので、「はい」保存終了。「いいえ」保存破棄終了。なんですがそれに「キャンセル」を追加したいんです。それは自分なりに考えると「保存するかどうかは不明だけど画面はそのままで現状データのまま」というやつをつけたいんですが・・・。

補足日時:2003/11/08 18:12
    • good
    • 0

連結フォームだとダメですね。

ご希望のスタイルの場合、非連結フォームを作って、VBAで書き込むことになります。

非連結フォームで検索してみてください。
    • good
    • 0

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

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


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