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

ExcelでのADOについて

1
投稿者投稿内容
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-06-15 14:25
お世話になります。

Excelのマクロで困っています。
環境はADO2.5,OLEDB Oracle、OSは2000以上、Excelも2000以上です。

まずConnectionオブジェクトを作成し、
そのオブジェクトでRecordSetをOpenしています。

RecordSetを二つ使用していて、
一つ目のOpenは問題なくうまくいきます。
ですが、二つ目のOpenでExcelエラーがでて落ちてしまいます。

原因もわからずで・・

ご存知の方いました教えてください
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-15 14:40
引用:

イオンさんの書き込み (2006-06-15 14:25) より:

RecordSetを二つ使用していて、
一つ目のOpenは問題なくうまくいきます。
ですが、二つ目のOpenでExcelエラーがでて落ちてしまいます。


どのテーブルを、どのように開いているのか (各々の Recordset の関係) が、わかりかねますので、
ミニマム コードを提示してくださると助かります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-06-15 15:09
・Connectionオブジェクト作成
Set Con = New ADODB.Connection
Con.Open "Provider=OraOLEDB.Oracle;Data Source=A;User ID=B;Password=C;"

・RecordSetOpen
Private sub RecordSetOpen(Recordset as ADODB.RecordSet, ByVal SQL As String)
RecordSet.CursorLocation = adUseClient
RecordSet.Open _
Source:=SQL, _
ActiveConnection:=Con, _
CursorType:=adOpenStatic, _
LockType:=adLockReadOnly, _
Options:=adCmdText
end sub

こんな感じです。
recordsetは二つ(A,B)あり、
RecordSetAのループ処理の中でRecordsetBを毎回Open,Closeしています。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-15 15:57
引用:

イオンさんの書き込み (2006-06-15 15:09) より:

こんな感じです。


A も B も、RecordSetOpen メソッドを使っているということでしょうか?
このあたり、明確に書かれていませんが、同じコネクションを使っているのであれば、
別のインスタンスを使うようにしてみてください。

引用:

recordsetは二つ(A,B)あり、
RecordSetAのループ処理の中でRecordsetBを毎回Open,Closeしています。


ということは、B の情報を A に適用しているのでしょうか?

少なくとも、B については Recordset.Open メソッドではなく、
DataBase.OpenRecordset メソッドを使った方が良いでしょうね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-06-15 19:16
レスありがとうございます!!

AとBは別のインスタンスを立てています。

>DataBase.OpenRecordset
この方法を試してみます!!
1

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