• ベストアンサー

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

  • VB.netでmdbのレコードを取得

    VB.netからAccessで作成したデータベースのレコードを 取得するプログラムを作りたいと考えています。 ですが、データベースを操作するプログラムは初めてですので、 どうもイメージがわきません。 やりたいことは、 1.VBからmdbにアクセス(DAO) 2.SELECTでレコードを取得 3.取得したレコードから必要なフィールドをテキストボックに表示 上記の処理が可能であれば、コーディングのヒントを頂けないでしょうか? よろしくお願いします --- OS:Windows Vista 開発環境:VS2005 pro

  • vb2005でmdbを読み込みmdbに書き出したい

    よろしくお願いします。windowsxp,access2003,vb2005express エディションを使用して、現在、勉強中です。 早速質問ですが、ADO・NETを使ってA_MDBをvb2005に読み込んで,その内容をB_MDBに書き込みたいのですがその方法が分かりません 例えば、A_MDBのA_TABLEには単価と数量が有ります。仮に10レコードがあるとします、このA_TABLEを読み込んで、単価と数量を 掛けて金額を計算し、B_MDBのB_TABLEに単価、数量、金額の各項目を書き込むという感じです。A,B両MDBは作成済です。あまり上手く 表現できませんがよろしくお願いいたします。

  • テーブルの削除

    VB6.0 ACCESS2000で開発しています。 ACCESSのt_名前というテーブルを DataGridへ表示しています。 グリッド上で選択した1件のレコードを削除したいのですが どうすればいいのでしょうか。 お願いします。

  • レコードの削除

    VB6.0 ACCESSで開発しています。 t_nyukoテーブルのデータを全て削除するのは下記のように 出来たのですが dataGridに表示されているものを1つ選択し 選択されたものだけ削除したいのですがどうすればいいのでしょうか? よろしくお願いします。 Private Sub Command1_Click() Dim cn As New ADODB.Connection Dim cmd As ADODB.Command Dim cat As New ADODB.Command Dim strSQL As String   Set cn = New ADODB.Connection cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\temp\db2.mdb" cn.Open cat.ActiveConnection = cn strSQL = "DELETE FROM t_nyuko " Set cmd = New ADODB.Command cmd.ActiveConnection = cn cmd.CommandText = strSQL cmd.Execute cn.Close Set cmd = Nothing Set cn = Nothing Set cat = Nothing End Sub

  • VBで任意の複数レコードを追加・削除するには?

    VBで作成するアプリについて質問があります。 処理としては、追加するレコード数が実行毎に違っているデータを、 フォームの入力エリアに入力し、そのデータを使用してデータベースに データを登録する処理を想定しています。 上記を踏まえて、下記条件を同時に満たす操作を作成したいと思っています。 (1)「追加」ボタンをクリックすると、表示されている入力エリアが1行追加される (2)レコード毎に作成された「削除」ボタンをクリックすると、  任意の入力済みの行を削除出来る 最後の行に入力エリアを追加・削除することは出来たのですが、 (2)の「任意の行を削除する」処理が作成できていない状況です。 VBの経験が2週間で、下らない質問かもしれませんがよろしくお願いします。

  • VB6,Access2000のMDBでのデータ型指定

    VB6でAccess2000のMDBを使用しています。 次のような形で一時的なレコードセットRS(0)を作成しようと思うのですが、このときの DataTypeEnum に相当するデータ形式がわかりません。 目的はMDBテーブルから作成したレコードセットRS(1)とのデータ交換です。そのMDBテーブルで数値としてあるフィールドとやりとりするRS(0)側のフィールドのデータ型(DataTypeEnum)を何に設定していいのかわかりません。 選択肢は次のページにあります。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpado260/htm/mdcstdatatypeenum.asp Set RS(0) = New ADODB.Recordset RS(0).Fields.Append "LinNo", adDouble ← この adDouble の位置で 何を指定するか。。。 RS(0).Fields.Append "JobID", adDouble RS(0).Fields.Append "JobName", adVarChar, 200 RS(0).Open よろしくお願いします。

  • レコードセットのデータを1行ごとに抽出したい

    いつもお世話になっております 今、VBを使用してツールを作成しているのですが DataGridにデータベースからレコードセットを 使用してデータを1行ずつ入れていこうと 思っているのですが、レコードセットで1行ずつ データを取れません。 どうか1行ずつのデータのとり方を教えて下さい! お願い致します。

  • 1レコードを2段表示で

    VB.NET2003でDB上のデータをフォームに表示させたいのですが、 項目数が多いため、2段(もしくはそれ以上)で表示したいと思っています。 あああ|いいい|ううう のような3カラムのレコードの場合、 あああ|いいい ううう のような表示にしたいのですが、DataGridでは無理そうでした。 VBの標準コントロールだけではこのような表示を簡単に行うことは 無理でしょうか? また、表示だけではなく編集して更新も可能にしたいと思っています。 市販のソフトを使わないとすると、自前でユーザーコントロールを 作らないと無理でしょうか・・・ このようなユーザーコントロールを作成するのに参考になる情報があれば、教えていただきたいです。

  • mdbにアクセスするDLLを作成したい

    プログラム初心者です。 mdbにアクセスし、レコードの登録、削除ができるDLLを 作成したいのですが、初心者的に簡単なのは VBかVCおよびc++どちらが作りやすいでしょうか?

  • レコードの削除ができない

    アクセス2007です。 デザインで一つのフォームを作り そこにテーブル1をドラッグしてサブフォームにしました。 そしてサブフォームのテーブル1はデータシートビューで表示しています。 例えば、画像のように4レコード目を削除しようと思いカーソルを持っていき 右クリックすると 「レコードの削除(R)」が選択できない状態です。 2007では、サブフォームでレコードの削除はできないのでしょうか? アドバイスよろしくお願いします。

専門家に質問してみよう