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
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>INSERT文で記述を行いたいのですが、サンプルが見つかりません
とりあえず見つけたものを貼って置きます。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd …
>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
>また、下記の記述の方がよいのですか?
レコードを追加すると言う意味では、どちらでも良いと思います。
どちらがパフォーマンスが良くなるか?と言う意味なら、
私には分かりません。(^^;
環境による影響もありますので、実際の実行環境で
比較テストしてみるのが確実ではないでしょうか?
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の時にエラーが起こるかもしれません。
この回答への補足
ありがとうございます。
これで、INSERTの記述ですよ。
→たしかにINSERTの記述だとはわかるんですが
なるべく汎用的に作成したかったもので、
いろいろ調べていたのです。
後、エラー処理がありませんの指摘どおり
記述していないのですが、記述のしかたが
よくわかりませんので教えて頂けますでしょうか。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名前'dbOpenDynaset'は宣言され...
-
PHP+ACCESSのデータベース接続...
-
データベースの接続ができない
-
VBA 変数名に変数を使用したい。
-
構造体配列の特定のメンバーをF...
-
CSVファイルのエクスポートでソ...
-
EXCEL VBAの課題です
-
SQLの構文エラー
-
MSFlexGrid 行選択状態
-
ワークテーブルの作成について
-
マルチバイト混在の文字列整形
-
C#でbyte配列から画像を表示さ...
-
C# DataTableに最後に追加した...
-
VBAで配列引数を値渡しできない...
-
ファイル名の一部削除について
-
excel vbaの配列なんですが・・・
-
アクセスで、テーブル間のレコ...
-
Excel2010のinputboxで複数デー...
-
対数変換のついて
-
★クリスタルレポートの元になる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
VB6.0とaccessのDBを接続する
-
UPDATE時にSETしたい日本語文字...
-
複数SQL発行について
-
データベースの接続ができない
-
初心者ですデータベースの形式 ...
-
ListviewにDB内容を表示し方に...
-
VB6.0でSQLServerへ・・・Recor...
-
OracleDataReaderについて…
-
名前'dbOpenDynaset'は宣言され...
-
PHP+ACCESSのデータベース接続...
-
ExcelVBAでのAccessデータベー...
-
vb.netでデータベース(Access)...
-
VB6.0でアクセス2000...
-
MSFlexGridでデータの追加の方...
-
VBSでADOを使ってaccessのテー...
-
MDBをADO接続でINSERT・UPDATE...
-
VB2005でACCESSの処理
-
VB6からAccess2000のテーブル使用
-
VBでmdbファイルの抽出
おすすめ情報