• ベストアンサー

vbからmdbのレコード削除

今、mdbデータをdataGridに表示させるVBがあります。 そこでdatagridからレコードを選択し、そのレコードをmdbから削除したいのですが、可能でしょうか? できる場合どのようにしたら良いのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#60992
noname#60992
回答No.4

NO1です。 特定のデータを狙い撃ちするためには、datagridにキー情報が入っていたほうが良いかと思います。 例えばdatagrid1には1列目にkey情報(Index)を入れるとします。 (表示させたくなければ幅を0にしてください。) クリックイベントなどで動かすのであれば、 CONN.EXECUTE "DELETE FROM TABLENAME WHERE INDEX = "& me.datagrid1.columns(0) & ";" みたいに SQL文にデータグリッドの値を組み込めばターゲットのデータだけを消せると思います。

hike106
質問者

お礼

16Augustさん有り難うございました! WHERE C = " & me.datagrid1.columns(2) の部分を WHERE C = "& "'" & me.datagrid1.columns(2)& "'" とするとうまく動作しました! 本当に助かりました。 ありがとうございます。

hike106
質問者

補足

16Augustさん回答ありがとうございます。 さっそく試したところ 「1つ以上の必要なパラメータの値が設定されていません」 とエラーが出てしまいます。 mdb (テーブル名:メイン) A|B|C|D|E|←フィールド名 1|あ|い|う|え| 2|か|き|く|け| 3|さ|し|す|せ| datagrid1で(き)を選択 CONN.EXECUTE "DELETE FROM メイン WHERE C = " & me.datagrid1.columns(2) としています。

その他の回答 (3)

  • monkiki07
  • ベストアンサー率26% (9/34)
回答No.3

こんばんわ。 "SelBookmarks"プロパティを使用してはいかがでしょうか? このサンプルは、ループが使われ、ユーザーが選択した行がデータベースから削除されます。 Sub DeleteRows()   Dim varBmk As Variant   For Each varBmk In DataGrid1.SelBookmarks     Data1.Recordset.Bookmark = varBmk     Data1.Recordset.Delete     Data1.Refresh   Next End Sub

noname#187541
noname#187541
回答No.2

おはようございます。 DataSetから行を削除する http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm 参考にどうぞ。

hike106
質問者

補足

M-SOFTさん回答ありがとうございます。 参考ページを教えてくださいましたが、自分にはちょっと難解です。。。

noname#60992
noname#60992
回答No.1

現在どのような形で読み込んでいるのかはわかりませんが、私だったら adodb でコネクション(conn)を作って、 conn.execute "DELETE FROM TABLENAME WHERE...." みたいにSQLで処理するかな。

hike106
質問者

補足

16Augustさん回答ありがとうございます。 現在ADODB.Connectionでdbを読み込んでいます。 そこでconn.execute "DELETE FROM TABLENAME WHERE...."を使ってみたのですが、どのようにWHERE部分を取得するのかで悩んでいます。(WHERE部分を空白にするとmdb内のレコードが全て削除されましたので動きは確認することができました。)

関連するQ&A