• 締切済み

ACCESS 削除 サブフォーム table 表形式

ACCESS初心者です。 以下のテーブルがサブフォームに表示されています。 メインフォームの名前をmain_frm サブフォームの名前をsub_frm テーブルの名前をtable とします。 テーブルは以下のように構成されています。 文字|値 a|1 b|10 c|3 d|4 メインフォームに削除ボタンを設置して マウスポインタにより任意のテーブルの一つの行(例えば、b|10) を削除するにはどのようなプロージャを組めばよろしいでしょうか?

みんなの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

メインフォーム/サブフォームに分けられるようですが、 サブフォームのフォームヘッダ部分を使って、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 は、メインフォームに配置したサブフォーム/サブレポート の名前です。

defmerube
質問者

お礼

お礼が遅くなり申し訳ありません。 意図したプログラムを作ることができました。 ソースまで頂き、ありがとうございます!

  • oka123
  • ベストアンサー率31% (69/219)
回答No.1

vbaでプログラムするのは あまり詳しくないので 削除クエリーを使用した方法です ↓ サブフォームのヘッダー部分へテキスト項目を設置します [form_koomoku]と仮定 このテキストソースへは当該の選択用項目[tbl_koomoku](仮定名) を指定します (ここへはマウスで選択された行の値が入る) 次に削除ですが 削除クエリーを作成して 抽出条件欄へ([tbl_koomoku]の項目にて) [Forms]![main_frm]![sub_frm].[Form]![form_koomoku] といれます このクエリーを開く というマクロを作成して そのマクロをクリックで呼び出す ただし b|10 と同じ値のレコードが複数あれば その全部が削除されます  

defmerube
質問者

お礼

サブフォームのヘッダにテキストボックスを作り 意図したプログラムを作ることができました! ありがとうございます!

関連するQ&A