教えて! goo のコンテンツに対する取り組みについて

フォームの入力値をクリア フォーム上にいくつかのテキストボックス、コンボボックスを配して入力してます。
入力途中に入力した値をすべて(削除)にして再入力したい。

現状、削除コマンドのクリック時に

Me.Undo 又は Me.コントロール名Undo

として試していますが、クリアされずフォームを閉じてテーブルを確認すると入力
した値がテーブルに追加されてしまいます
教えてください。

教えて!goo グレード

A 回答 (4件)

No1、No2です。



もし、Undoを使用するならば
フォームの左側に鉛筆マークが
ある間はUndoが使用できます。
たとえば、

If Me.Dirty Then
Me.Undo
End If

これでデータが削除されます。
あるいは、以下にも記述があります。
http://www.accessclub.jp/bbs/0012/beginers5126.h …
    • good
    • 0
この回答へのお礼

回答ありがとうございました

お礼日時:2011/09/16 12:01

Private 削除ボタン_click()


Me.undo
exit sub
で入力前の状態に戻るはずですけどねぇ?
Me.Undo の前に、Me.Recalc とか Me.Requery って入れてませんよね?
クリックする前にはレコードセレクタが編集中のアイコン(鉛筆マーク)になってますよね?
帳票フォームの場合に削除ボタンを詳細セクションに置いてあって
そのレコードのボタンではなく前後のボタンを押しているとか?
レコードが移動すればその編集中のレコードは確定されます。

Undo で戻せるのは編集中の場合だけです。
キーボードのESCキーを押した場合と一緒です。確定したものを元には戻せません。
Private 削除ボタン_click()
If Me.Dirty Then
Me.undo
Else
Msgbox "編集中ではありません"
End If
exit sub
コードの内容をこんな風に差し替えてみたら・・
それでもダメならもっと詳~~細な説明が必要ですね。
    • good
    • 1
この回答へのお礼

回答ありがとうございました

お礼日時:2011/09/16 12:01

No1です。


なんだか、前の質問に新しく追加
したつもりがこちらの質問に
回答してしまいました。
お気に召さなかったらスルーしてください。
    • good
    • 0

フォームのレコードソースにたとえば


ID(オートナンバー 主キー)
名前(テキスト型)
住所(テキスト型)
年令(数値型)
があるとします。


Private Sub 削除コマンド_Click()
Dim rs As Recordset
Set rs = Me.RecordsetClone

'(1)ここから
'rs.Bookmark = Me.Bookmark
'rs.Delete
'(1)ここまで


'(2)ここから
rs.Edit
rs!名前 = Null
rs!住所 = Null
rs!年令 = Null
rs.Update
'(2)ここまで

End Sub


(1)の場合はすべてのレコードを削除します。
ただし、主キーがオートナンバーなどの場合は
欠番が生じます。

(2)の場合は(1)の場合と違って主キーの
オートナンバーを温存してその他のデータを
削除します。


お好きな方法で。
    • good
    • 1

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

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

教えて!goo グレード

関連するカテゴリからQ&Aを探す


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

人気Q&Aランキング