- - PR -
ExcelでのADOについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-15 14:25
お世話になります。
Excelのマクロで困っています。 環境はADO2.5,OLEDB Oracle、OSは2000以上、Excelも2000以上です。 まずConnectionオブジェクトを作成し、 そのオブジェクトでRecordSetをOpenしています。 RecordSetを二つ使用していて、 一つ目のOpenは問題なくうまくいきます。 ですが、二つ目のOpenでExcelエラーがでて落ちてしまいます。 原因もわからずで・・ ご存知の方いました教えてください | ||||||||
|
投稿日時: 2006-06-15 14:40
どのテーブルを、どのように開いているのか (各々の Recordset の関係) が、わかりかねますので、 ミニマム コードを提示してくださると助かります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 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しています。 | ||||||||
|
投稿日時: 2006-06-15 15:57
A も B も、RecordSetOpen メソッドを使っているということでしょうか? このあたり、明確に書かれていませんが、同じコネクションを使っているのであれば、 別のインスタンスを使うようにしてみてください。
ということは、B の情報を A に適用しているのでしょうか? 少なくとも、B については Recordset.Open メソッドではなく、 DataBase.OpenRecordset メソッドを使った方が良いでしょうね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-06-15 19:16
レスありがとうございます!!
AとBは別のインスタンスを立てています。 >DataBase.OpenRecordset この方法を試してみます!! |
1