-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コンポーネントとサービスの削除」 ...続きを読む
    通常は正しく削除されてしかるべきなのでしょうが、レジストリにキーが残った状態になることもありますので
    ・・・
    完全削除についてはリリースノートにも記載されております。

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

    とりあえず問題も解決し、レジストリのクリア方法もわかりましたのでこの件はこれで締め切らせていただきます。
    投稿日時 - 2004-02-11 02:21:46
    • ありがとう数0
    • 2004-02-09 12:44:36
    • 回答No.3
    私も Windows XP + Oracle 9i + oo4o の組み合わせを使用していますが、正常に CreateObject が実行できています。 やはり、レジストリのどこかが壊れているとか、そのPC固有の問題ということでしょうかね。 ちなみに、 Set OraSession = New OraSessionClass でも、やはり失敗するのでしょうか?(するんでしょうね。) ...続きを読む
    私も 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
    • 2004-02-10 01:11:01
    • 回答No.4
    >昔の古いoracleをインストールしたりしたのがまずかったのでしょうか という事なので、前回のレジストリーが一部残っていて書き換えが正常にできなかったのではないでしょうか。 下記は8iのアンインストールのページですが、hkey_localmachine\software\Apache Group が違うくらいで9iでもほぼ同じ構成です。 結果は保証できませんが、お手間でなければ1度9iをアン ...続きを読む
    >昔の古い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
    • 2004-02-09 10:44:37
    • 回答No.1
    >VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。 外してみたらどうでしょう? OraSessionはObject型にして ...続きを読む
    >VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。

    外してみたらどうでしょう?
    OraSessionはObject型にして
    お礼コメント
    回答ありがとうございます。
    はずしてみても結果は同じでした。
    投稿日時 - 2004-02-09 12:00:17
    • ありがとう数0
    • 2004-02-09 10:48:30
    • 回答No.2
    Set OraSession = CreateObject("OracleInProcServer.XOraSession") ここで失敗していると言う事はOO4OのActivXオブジェクトの登録に失敗しているか別の場所見に行っている可能性が高いです。 OO4OのDLLを再登録する場合は、 コマンドラインから %ORACLE_HOMEの有るドライブへ移動。 ...続きを読む
    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
    • 回答数5
    • 気になる数0
    • ありがとう数4
    • ありがとう
    • なるほど、役に立ったなど
      感じた思いを「ありがとう」で
      伝えてください
    • 質問する
    • 知りたいこと、悩んでいることを
      投稿してみましょう
    こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
    このQ&Aにはまだコメントがありません。
    あなたの思ったこと、知っていることをここにコメントしてみましょう。

    関連するQ&A

    -PR-
    -PR-

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

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

    特集


    成功のポイントとは?M&Aで経営の不安を解決!

    -PR-

    ピックアップ

    -PR-
    ページ先頭へ