- ベストアンサー
入力途中の入力した値をすべて削除する方法
フォームの入力値をクリア フォーム上にいくつかのテキストボックス、コンボボックスを配して入力してます。 入力途中に入力した値をすべて(削除)にして再入力したい。 現状、削除コマンドのクリック時に Me.Undo 又は Me.コントロール名Undo として試していますが、クリアされずフォームを閉じてテーブルを確認すると入力 した値がテーブルに追加されてしまいます 教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No1、No2です。 もし、Undoを使用するならば フォームの左側に鉛筆マークが ある間はUndoが使用できます。 たとえば、 If Me.Dirty Then Me.Undo End If これでデータが削除されます。 あるいは、以下にも記述があります。 http://www.accessclub.jp/bbs/0012/beginers5126.html
その他の回答 (3)
- nicotinism
- ベストアンサー率70% (1019/1452)
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 コードの内容をこんな風に差し替えてみたら・・ それでもダメならもっと詳~~細な説明が必要ですね。
お礼
回答ありがとうございました
- piroin654
- ベストアンサー率75% (692/917)
No1です。 なんだか、前の質問に新しく追加 したつもりがこちらの質問に 回答してしまいました。 お気に召さなかったらスルーしてください。
- piroin654
- ベストアンサー率75% (692/917)
フォームのレコードソースにたとえば 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)の場合と違って主キーの オートナンバーを温存してその他のデータを 削除します。 お好きな方法で。
お礼
回答ありがとうございました