-PR-

締切り済みの質問

質問No.774379
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数5
閲覧数9149
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でテーブルの参照はできています。
投稿日時 - 2004-02-09 10:20:28

回答 (5)

回答No.5
通常は正しく削除されてしかるべきなのでしょうが、レジストリにキーが残った状態になることもありますので
・・・
完全削除についてはリリースノートにも記載されております。

Oracle9i Client for Windows インストレーション・ガイド リリース2 (9.2.0.1.0)(2002/8/7)
「オラクルコンポーネントのインストール」「oracleコンポーネントとサービスの削除」
投稿日時 - 2004-02-10 20:34:59
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。
参考になりました。

とりあえず問題も解決し、レジストリのクリア方法もわかりましたのでこの件はこれで締め切らせていただきます。
投稿日時 - 2004-02-11 02:21:46
回答No.4
>昔の古いoracleをインストールしたりしたのがまずかったのでしょうか
という事なので、前回のレジストリーが一部残っていて書き換えが正常にできなかったのではないでしょうか。
下記は8iのアンインストールのページですが、hkey_localmachine\software\Apache Group が違うくらいで9iでもほぼ同じ構成です。
結果は保証できませんが、お手間でなければ1度9iをアンインストールし、URLを参考にレジストリーを整理、再インストールされてみてはいかがでしょうか。

ttp://www.iceprobe.net/oraoraadmin/admin_Uninstall.html
投稿日時 - 2004-02-10 01:11:01
この回答を支持する
(現在0人が支持しています)
お礼
質問には書きませんでしたが、レジストリの削除も行っています。フォルダごとファイルを消すことも行いました。しかし、完全かというとあまりに多いので少しは残したと思います。まそれがいけないというといけないのでしょうが、完全になくなってるキーを再生くらいしてくれても良さそうです。実際多くのoracle何とかのキーはされてます。
oo4oだけがされないというのは解せません。
投稿日時 - 2004-02-10 02:28:33
回答No.3
私も Windows XP + Oracle 9i + oo4o の組み合わせを使用していますが、正常に CreateObject が実行できています。
やはり、レジストリのどこかが壊れているとか、そのPC固有の問題ということでしょうかね。
ちなみに、
Set OraSession = New OraSessionClass
でも、やはり失敗するのでしょうか?(するんでしょうね。)
投稿日時 - 2004-02-09 12:44:36
この回答を支持する
(現在0人が支持しています)
補足
皆様にご助言いただきましてありがとうございました。

接続についてはできる様になりました。

別の動くマシンのレジストリ設定から、Oracle Objects For OLEに関するものを抜き出しコピー(書き換え)しました。

とりあえずの結論として
1.XOraSessionに関するレジストリキーが存在しなかった
2.XOraServerのCLSIDが間違っていた
3.oip9.dllを指定しているレジストリキーが存在しなかった

ということです。

しかしインストーラからクライアントモジュールをインストール(何度も)しているのになぜそれらのキーが正常にできなかったのかが疑問の残るところです。

これらについて何かご存知でしたらまたよろしくお願いします。
投稿日時 - 2004-02-09 23:51:04
お礼
やはり固有の問題ですね。
昔の古いoracleをインストールしたりしたのがまずかったのでしょうか?(もちろんアンインストールしてあります)
>Set OraSession = New OraSessionClass
やはり失敗しますね。
投稿日時 - 2004-02-09 12:59:37
回答No.2
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がうまく参照出来てない場合はこちらを試してみるとか。
投稿日時 - 2004-02-09 10:48:30
この回答を支持する
(現在0人が支持しています)
お礼
回答ありがとうございます。

%ORACLE_HOMEの有るドライブへ移動。
> cd %ORACLE_HOME%bin
> regsvr32.exe oip9.dll
念のために実行

> oo4oparm.reg
このファイルはデフォルトeドライブで作成されているためそのまま実行はせず、レジストリエディタでファイル内容と同じ内容が登録されていることを確認しました。(e→cで)

書き忘れましたが
Dim OraSession As Objects
で定義しています。

試しに
Dim OraSession As OraSession
に変更してみましたが、こちらでも同じエラーがでました。
投稿日時 - 2004-02-09 12:13:06
回答No.1
>VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。

外してみたらどうでしょう?
OraSessionはObject型にして
投稿日時 - 2004-02-09 10:44:37
この回答を支持する
(現在0人が支持しています)
お礼
回答ありがとうございます。
はずしてみても結果は同じでした。
投稿日時 - 2004-02-09 12:00:17
この質問は役に立ちましたか?
3人が「このQ&Aが役に立った」と投票しています
もっと聞いてみる

関連するQ&A

この他の関連するQ&Aをキーワードで探す

回答募集中

同じカテゴリの人気Q&Aランキング

カテゴリ
Visual Basic
-PR-
-PR-

特集

背筋がゾクゾクする心霊体験を要チェック!

お城、ボート、ツリーハウス、ユニークな物件満載!

【期間限定】1ヶ月無料キャンペーン中!

このQ&Aの関連キーワード

同じカテゴリの人気Q&Aランキング

カテゴリ
Visual Basic
-PR-

回答のついた最新のQ&A

ピックアップ

-PR-