• 締切済み

MDBをADO接続でINSERT・UPDATE・DELETE

VB2005.NETの初級開発者です。 MDBをADO接続で開発を行いたいのですが 記述の方法がわかりませんので教えて下さい。 下記のようなサンプルはネット上でもよく見るのですが INSERT分で記述を行いたいのですが、サンプルが見つかりません よろしくお願いします。 後、CurrentProject.Connection.Execute strSQL, , adCmdTex このような記述をネット上で見るのですがstrSQLにInsert分を 記述すれば良いのですか、わからないので教えて下さい。 また、下記の記述の方がよいのですか? Dim ct As New Connection() Dim rt As New Recordset() ' 接続文字列を設定 ct.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\test.mdb" ' データベースに接続 ct.Open() ' テーブルを指定し、レコードセットをオープン With rt .CursorType = CursorTypeEnum.adOpenDynamic .LockType = LockTypeEnum.adLockOptimistic .Open("Insert_Tbl", ct, , , CommandTypeEnum.adCmdTable) End With ' データを追加 With rt .AddNew() .Fields("aaa").Value = TextBox1.Text .Fields("bbb").Value = TextBox2.Text .Update() End With

みんなの回答

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

>INSERT文で記述を行いたいのですが、サンプルが見つかりません とりあえず見つけたものを貼って置きます。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_s12.htm >CurrentProject.Connection.Execute strSQL, , adCmdTex これは、AccessのApplicationオブジェクトの CurrentProjectプロパティの事だと思いますので、 AccessVBAのサンプルだと思います。 これを参考にするなら、CurrentProject.Connection の部分を、 データベースに接続した Connectionオブジェクトに置き換えます。 質問のソースで言うと、 ct.Open() の後で、 strSQL = "INSERT INTO Insert_Tbl ( aaa, bbb ) values ('hoge','foo');" ct.Execute strSQL, , adCmdText + adExecuteNoRecords これでSQL文を発行できると思います。 レコードセットを返さないSQL文(INSERT, UPDATE, DELETE)の場合は、 adExecuteNoRecordsを付けた方がパフォーマンスが良なるそうです。 http://timberlandchapel.com/adooptim.html >また、下記の記述の方がよいのですか? レコードを追加すると言う意味では、どちらでも良いと思います。 どちらがパフォーマンスが良くなるか?と言う意味なら、 私には分かりません。(^^; 環境による影響もありますので、実際の実行環境で 比較テストしてみるのが確実ではないでしょうか?

masarumac
質問者

補足

ありがとうございます。 参考にさせて頂きます。

  • tomo316
  • ベストアンサー率35% (51/142)
回答No.1

これで、INSERTの記述ですよ。 このプログラムを説明すると。 1、AddNewでレコードを作ります。 2、Fieldsで値をセットします。 3、.Update()でUpdateします。 ようは、SQL的に言うとinsertで空のレコードを作りUpdateで値をセットしていると思えばわかりやすいでしょうか? こうも書けますよ。 rt.AddNew TextBox1.Text, TextBox2.Text この例はinsertのイメージです。 ただ このプログラムで気が付いたことが2、3あります。 1、セッションが切れれば自動コミットが働くのでしょうが、明示的に行ったほうがいいと思います。     rt.Close: Set rt = Nothing     ct.Close: Set ct = Nothing 2、エラー処理がありませんね AddNewのときと、Updateの時にエラーが起こるかもしれません。

masarumac
質問者

補足

ありがとうございます。 これで、INSERTの記述ですよ。 →たしかにINSERTの記述だとはわかるんですが なるべく汎用的に作成したかったもので、 いろいろ調べていたのです。 後、エラー処理がありませんの指摘どおり 記述していないのですが、記述のしかたが よくわかりませんので教えて頂けますでしょうか。 よろしくお願いします。

関連するQ&A