- 締切済み
VB6(SP5)+OO4OでCreateObjectが失敗する
上記の環境でプログラムを作成しています。 Windows2000ではうまくいきました。 WindowsXP(Professional)で失敗します。 Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase(C_ORACLE_TNS, C_ORACLE_USER & "/" & C_ORACLE_PASS, 0) のようなコーディングでCreateObjectのところで失敗しエラーとして429 ActiveX コンポーネントはオブジェクトを作成できません。 というのが発生します。 Oracleのバージョンは9iでそのクライアントパック9.2.0.1.0を管理者モードでインストールしています。 もちろんOO4Oはインストールされていますし、VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。 何度か再インストールなどしましたが全く同じです。何がいけないのでしょうか?直接回答でなくてもヒントでも何でも教えてください。 なおSQL Plusでテーブルの参照はできています。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- zealzany
- ベストアンサー率35% (19/53)
通常は正しく削除されてしかるべきなのでしょうが、レジストリにキーが残った状態になることもありますので ・・・ 完全削除についてはリリースノートにも記載されております。 Oracle9i Client for Windows インストレーション・ガイド リリース2 (9.2.0.1.0)(2002/8/7) 「オラクルコンポーネントのインストール」「oracleコンポーネントとサービスの削除」
- zealzany
- ベストアンサー率35% (19/53)
>昔の古いoracleをインストールしたりしたのがまずかったのでしょうか という事なので、前回のレジストリーが一部残っていて書き換えが正常にできなかったのではないでしょうか。 下記は8iのアンインストールのページですが、hkey_localmachine\software\Apache Group が違うくらいで9iでもほぼ同じ構成です。 結果は保証できませんが、お手間でなければ1度9iをアンインストールし、URLを参考にレジストリーを整理、再インストールされてみてはいかがでしょうか。 ttp://www.iceprobe.net/oraoraadmin/admin_Uninstall.html
お礼
質問には書きませんでしたが、レジストリの削除も行っています。フォルダごとファイルを消すことも行いました。しかし、完全かというとあまりに多いので少しは残したと思います。まそれがいけないというといけないのでしょうが、完全になくなってるキーを再生くらいしてくれても良さそうです。実際多くのoracle何とかのキーはされてます。 oo4oだけがされないというのは解せません。
- tsukasa-12r
- ベストアンサー率65% (358/549)
私も Windows XP + Oracle 9i + oo4o の組み合わせを使用していますが、正常に CreateObject が実行できています。 やはり、レジストリのどこかが壊れているとか、そのPC固有の問題ということでしょうかね。 ちなみに、 Set OraSession = New OraSessionClass でも、やはり失敗するのでしょうか?(するんでしょうね。)
お礼
やはり固有の問題ですね。 昔の古いoracleをインストールしたりしたのがまずかったのでしょうか?(もちろんアンインストールしてあります) >Set OraSession = New OraSessionClass やはり失敗しますね。
補足
皆様にご助言いただきましてありがとうございました。 接続についてはできる様になりました。 別の動くマシンのレジストリ設定から、Oracle Objects For OLEに関するものを抜き出しコピー(書き換え)しました。 とりあえずの結論として 1.XOraSessionに関するレジストリキーが存在しなかった 2.XOraServerのCLSIDが間違っていた 3.oip9.dllを指定しているレジストリキーが存在しなかった ということです。 しかしインストーラからクライアントモジュールをインストール(何度も)しているのになぜそれらのキーが正常にできなかったのかが疑問の残るところです。 これらについて何かご存知でしたらまたよろしくお願いします。
- mi-si
- ベストアンサー率35% (200/567)
Set OraSession = CreateObject("OracleInProcServer.XOraSession") ここで失敗していると言う事はOO4OのActivXオブジェクトの登録に失敗しているか別の場所見に行っている可能性が高いです。 OO4OのDLLを再登録する場合は、 コマンドラインから %ORACLE_HOMEの有るドライブへ移動。 > cd %ORACLE_HOME%bin > regsvr32.exe oip9.dll > oo4oparm.reg を実行。 Oracle InProc Server 4.0 Type Libralyを追加していると言うことは Dim OraSession As OraSession で変数定義してますよね? Dim OraSession As Objects の方が無難な指定なので、Type Libraryがうまく参照出来てない場合はこちらを試してみるとか。
お礼
回答ありがとうございます。 %ORACLE_HOMEの有るドライブへ移動。 > cd %ORACLE_HOME%bin > regsvr32.exe oip9.dll 念のために実行 > oo4oparm.reg このファイルはデフォルトeドライブで作成されているためそのまま実行はせず、レジストリエディタでファイル内容と同じ内容が登録されていることを確認しました。(e→cで) 書き忘れましたが Dim OraSession As Objects で定義しています。 試しに Dim OraSession As OraSession に変更してみましたが、こちらでも同じエラーがでました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。 外してみたらどうでしょう? OraSessionはObject型にして
お礼
回答ありがとうございます。 はずしてみても結果は同じでした。
お礼
ありがとうございます。 参考になりました。 とりあえず問題も解決し、レジストリのクリア方法もわかりましたのでこの件はこれで締め切らせていただきます。