@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

OleDb.OleDbDataAdapter.Fillについて

1
投稿者投稿内容
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2005-06-20 11:37
いつもお世話になっております。

アクセスのテーブルのデータ取得でエラーが出て困っています。
以下、ソースを抜粋しています。

Dim pMyDb As OleDb.OleDbConnection
Dim pTran As OleDb.OleDbTransaction
Dim pDaAd As OleDb.OleDbDataAdapter

pMyDb = New OleDb.OleDbConnection
pMyDb.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & pPath & ";" & _
"Persist Security Info=False"
pMyDb.Open()

pTran = pMyDb.BeginTransaction

pDaAd = New OleDb.OleDbDataAdapter("SELECT * FROM TEST", pMyDb)

pDaAd.Fill(dtSet, "MDBTable")

これを実行すると、Fillメソッドで、「Execute は、コマンドに割り当てられた接続が保留状態であるローカルのトランザクションにあるとき、トランザクション オブジェクトを持つコマンドが必要です。コマンドの Transaction プロパティがまで初期化されていません。」というエラーが発生します。

トランザクション処理中にSELECT文は発行できないという事でしょうか?
(そんな訳はないと思いますが・・・)

何か順番がおかしいのでしょうか?

もしお分かりの方がいらっしゃいましたら、
ご回答、よろしくお願い致します。


[ メッセージ編集済み 編集者: koseki 編集日時 2005-06-20 11:40 ]
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-06-20 11:47
コード:
Dim command As New OleDbCommand("SELECT * FROM TEST", pMyDb)
command.Transaction =  pTran
pDaAd  = New OleDb.OleDbDataAdapter(command)



OleDbCommandを使用して、SELECT文をトランザクション内で発行しましょう。
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2005-06-20 11:52
burton999さん、ご回答ありがとうございます。

解決致しました。
なるほどという感じです。

ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)