- ベストアンサー
vbからmdbのレコード削除
今、mdbデータをdataGridに表示させるVBがあります。 そこでdatagridからレコードを選択し、そのレコードをmdbから削除したいのですが、可能でしょうか? できる場合どのようにしたら良いのでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
NO1です。 特定のデータを狙い撃ちするためには、datagridにキー情報が入っていたほうが良いかと思います。 例えばdatagrid1には1列目にkey情報(Index)を入れるとします。 (表示させたくなければ幅を0にしてください。) クリックイベントなどで動かすのであれば、 CONN.EXECUTE "DELETE FROM TABLENAME WHERE INDEX = "& me.datagrid1.columns(0) & ";" みたいに SQL文にデータグリッドの値を組み込めばターゲットのデータだけを消せると思います。
その他の回答 (3)
- monkiki07
- ベストアンサー率26% (9/34)
こんばんわ。 "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
おはようございます。 DataSetから行を削除する http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm 参考にどうぞ。
補足
M-SOFTさん回答ありがとうございます。 参考ページを教えてくださいましたが、自分にはちょっと難解です。。。
現在どのような形で読み込んでいるのかはわかりませんが、私だったら adodb でコネクション(conn)を作って、 conn.execute "DELETE FROM TABLENAME WHERE...." みたいにSQLで処理するかな。
補足
16Augustさん回答ありがとうございます。 現在ADODB.Connectionでdbを読み込んでいます。 そこでconn.execute "DELETE FROM TABLENAME WHERE...."を使ってみたのですが、どのようにWHERE部分を取得するのかで悩んでいます。(WHERE部分を空白にするとmdb内のレコードが全て削除されましたので動きは確認することができました。)
お礼
16Augustさん有り難うございました! WHERE C = " & me.datagrid1.columns(2) の部分を WHERE C = "& "'" & me.datagrid1.columns(2)& "'" とするとうまく動作しました! 本当に助かりました。 ありがとうございます。
補足
16Augustさん回答ありがとうございます。 さっそく試したところ 「1つ以上の必要なパラメータの値が設定されていません」 とエラーが出てしまいます。 mdb (テーブル名:メイン) A|B|C|D|E|←フィールド名 1|あ|い|う|え| 2|か|き|く|け| 3|さ|し|す|せ| datagrid1で(き)を選択 CONN.EXECUTE "DELETE FROM メイン WHERE C = " & me.datagrid1.columns(2) としています。