-PR-
  • 困ってます
  • 質問No.774379
締切り
済み

VB6(SP5)+OO4OでCreateObjectが失敗する

  • 閲覧数11202
  • ありがとう数9
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 61% (44/72)

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

回答 (全5件)

  • 回答No.5
レベル8

ベストアンサー率 35% (19/53)

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

お礼率 61% (44/72)

ありがとうございます。
参考になりました。

とりあえず問題も解決し、レジストリのクリア方法もわかりましたのでこの件はこれで締め切らせていただきます。
投稿日時 - 2004-02-11 02:21:46
  • ありがとう数0
  • 回答No.3
レベル12

ベストアンサー率 65% (358/549)

私も Windows XP + Oracle 9i + oo4o の組み合わせを使用していますが、正常に CreateObject が実行できています。 やはり、レジストリのどこかが壊れているとか、そのPC固有の問題ということでしょうかね。 ちなみに、 Set OraSession = New OraSessionClass でも、やはり失敗するのでしょうか?(するんでしょうね。) ...続きを読む
私も Windows XP + Oracle 9i + oo4o の組み合わせを使用していますが、正常に CreateObject が実行できています。
やはり、レジストリのどこかが壊れているとか、そのPC固有の問題ということでしょうかね。
ちなみに、
Set OraSession = New OraSessionClass
でも、やはり失敗するのでしょうか?(するんでしょうね。)
補足コメント
dabo

お礼率 61% (44/72)

皆様にご助言いただきましてありがとうございました。

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

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

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

ということです。

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

これらについて何かご存知でしたらまたよろしくお願いします。
投稿日時 - 2004-02-09 23:51:04
お礼コメント
dabo

お礼率 61% (44/72)

やはり固有の問題ですね。
昔の古いoracleをインストールしたりしたのがまずかったのでしょうか?(もちろんアンインストールしてあります)
>Set OraSession = New OraSessionClass
やはり失敗しますね。
投稿日時 - 2004-02-09 12:59:37
  • ありがとう数0
  • 回答No.4
レベル8

ベストアンサー率 35% (19/53)

>昔の古い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
お礼コメント
dabo

お礼率 61% (44/72)

質問には書きませんでしたが、レジストリの削除も行っています。フォルダごとファイルを消すことも行いました。しかし、完全かというとあまりに多いので少しは残したと思います。まそれがいけないというといけないのでしょうが、完全になくなってるキーを再生くらいしてくれても良さそうです。実際多くのoracle何とかのキーはされてます。
oo4oだけがされないというのは解せません。
投稿日時 - 2004-02-10 02:28:33
  • ありがとう数0
  • 回答No.1
レベル14

ベストアンサー率 65% (1020/1553)

>VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。 外してみたらどうでしょう? OraSessionはObject型にして ...続きを読む
>VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。

外してみたらどうでしょう?
OraSessionはObject型にして
お礼コメント
dabo

お礼率 61% (44/72)

回答ありがとうございます。
はずしてみても結果は同じでした。
投稿日時 - 2004-02-09 12:00:17
  • ありがとう数0
  • 回答No.2
レベル12

ベストアンサー率 35% (200/567)

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がうまく参照出来てない場合はこちらを試してみるとか。
お礼コメント
dabo

お礼率 61% (44/72)

回答ありがとうございます。

%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
このQ&Aで解決しましたか?

関連するQ&A

-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


-PR-

ピックアップ

-PR-
ページ先頭へ