- 締切済み
ACCESS 削除 サブフォーム table 表形式
ACCESS初心者です。 以下のテーブルがサブフォームに表示されています。 メインフォームの名前をmain_frm サブフォームの名前をsub_frm テーブルの名前をtable とします。 テーブルは以下のように構成されています。 文字|値 a|1 b|10 c|3 d|4 メインフォームに削除ボタンを設置して マウスポインタにより任意のテーブルの一つの行(例えば、b|10) を削除するにはどのようなプロージャを組めばよろしいでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 30246kiku
- ベストアンサー率73% (370/504)
メインフォーム/サブフォームに分けられるようですが、 サブフォームのフォームヘッダ部分を使って、1つのフォームでやるってことは可能ですか。 削除するものを選んでから、削除ボタンをクリックする、手順になります。 1つのフォームでする場合) サブフォーム sub_frm のフォームヘッダに、削除用ボタン btnDel を配置します。 btnDel のクリック時イベントプロシジャに以下を記述します。 Private Sub btnDel_Click() Dim rPos As Long If (Me.NewRecord = False) Then rPos = Me.Recordset.AbsolutePosition Me.Recordset.Delete Me.Requery Me.Recordset.AbsolutePosition = rPos End If End Sub 処理内容としては、 新規レコード行でなければ、 現在行を記憶し、 削除後、 レコードを再取得し、 処理していた行に移動する というものですが、 AbsolutePosition の使い方が正しいのかは?です。 (Access2007で動いています) メイン/サブフォームにする場合) メインフォームに削除用ボタン btnDel を配置します。 btnDel のクリック時イベントプロシジャに以下を記述します。 Private Sub btnDel_Click() Dim rPos As Long If (Me.FSUB.Form.NewRecord = False) Then rPos = Me.FSUB.Form.Recordset.AbsolutePosition Me.FSUB.Form.Recordset.Delete Me.FSUB.Form.Requery Me.FSUB.Form.Recordset.AbsolutePosition = rPos End If End Sub 上記 FSUB は、メインフォームに配置したサブフォーム/サブレポート の名前です。
- oka123
- ベストアンサー率31% (69/219)
vbaでプログラムするのは あまり詳しくないので 削除クエリーを使用した方法です ↓ サブフォームのヘッダー部分へテキスト項目を設置します [form_koomoku]と仮定 このテキストソースへは当該の選択用項目[tbl_koomoku](仮定名) を指定します (ここへはマウスで選択された行の値が入る) 次に削除ですが 削除クエリーを作成して 抽出条件欄へ([tbl_koomoku]の項目にて) [Forms]![main_frm]![sub_frm].[Form]![form_koomoku] といれます このクエリーを開く というマクロを作成して そのマクロをクリックで呼び出す ただし b|10 と同じ値のレコードが複数あれば その全部が削除されます
お礼
サブフォームのヘッダにテキストボックスを作り 意図したプログラムを作ることができました! ありがとうございます!
お礼
お礼が遅くなり申し訳ありません。 意図したプログラムを作ることができました。 ソースまで頂き、ありがとうございます!