総ありがとう数 累計4,332万(2014年12月22日現在)

毎月4,000万人が利用!Q&Aでみんなで助け合い!

-PR-
dabo

上記の環境でプログラムを作成しています。
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
  • 気になる数0

Aみんなの回答(全5件)

回答 (全5件)

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

Oracle9i Client for Windows インストレーション・ガイド リリース2 (9.2.0.1.0)(2002/8/7)
「オラクルコンポーネントのインストール」「oracleコンポーネントとサービスの削除」
お礼コメント
ありがとうございます。
参考になりました。

とりあえず問題も解決し、レジストリのクリア方法もわかりましたのでこの件はこれで締め切らせていただきます。
投稿日時 - 2004-02-11 02:21:46
  • 同意数0(0-0)
  • ありがとう数0
  • 2004-02-09 12:44:36
  • 回答No.3
私も Windows XP + Oracle 9i + oo4o の組み合わせを使用していますが、正常に CreateObject が実行できています。
やはり、レジストリのどこかが壊れているとか、そのPC固有の問題ということでしょうかね。
ちなみに、
Set OraSession = New OraSessionClass
でも、やはり失敗するのでしょうか?(するんでしょうね。)
補足コメント
皆様にご助言いただきましてありがとうございました。

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

別の動くマシンのレジストリ設定から、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
  • 同意数0(0-0)
  • ありがとう数0
  • 2004-02-10 01:11:01
  • 回答No.4
>昔の古いoracleをインストールしたりしたのがまずかったのでしょうか
という事なので、前回のレジストリーが一部残っていて書き換えが正常にできなかったのではないでしょうか。
下記は8iのアンインストールのページですが、hkey_localmachine\software\Apache Group が違うくらいで9iでもほぼ同じ構成です。
結果は保証できませんが、お手間でなければ1度9iをアンインストールし、URLを参考にレジストリーを整理、再インストールされてみてはいかがでしょうか。

ttp://www.iceprobe.net/oraoraadmin/admin_Uninstall.html
お礼コメント
質問には書きませんでしたが、レジストリの削除も行っています。フォルダごとファイルを消すことも行いました。しかし、完全かというとあまりに多いので少しは残したと思います。まそれがいけないというといけないのでしょうが、完全になくなってるキーを再生くらいしてくれても良さそうです。実際多くのoracle何とかのキーはされてます。
oo4oだけがされないというのは解せません。
投稿日時 - 2004-02-10 02:28:33
  • 同意数0(0-0)
  • ありがとう数0
  • 2004-02-09 10:44:37
  • 回答No.1
>VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。

外してみたらどうでしょう?
OraSessionはObject型にして
お礼コメント
回答ありがとうございます。
はずしてみても結果は同じでした。
投稿日時 - 2004-02-09 12:00:17
  • 同意数0(0-0)
  • ありがとう数0
  • 2004-02-09 10:48:30
  • 回答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がうまく参照出来てない場合はこちらを試してみるとか。
お礼コメント
回答ありがとうございます。

%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
  • 同意数0(0-0)
  • ありがとう数0
  • 回答数5
  • 気になる数0
  • ありがとう数4
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

関連するQ&A

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

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集


年賀状のマナーや作り方を学べるQ&A特集!

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ