• 締切済み

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でテーブルの参照はできています。

  • dabo
  • お礼率61% (44/72)

みんなの回答

  • zealzany
  • ベストアンサー率35% (19/53)
回答No.5

通常は正しく削除されてしかるべきなのでしょうが、レジストリにキーが残った状態になることもありますので ・・・ 完全削除についてはリリースノートにも記載されております。 Oracle9i Client for Windows インストレーション・ガイド リリース2 (9.2.0.1.0)(2002/8/7) 「オラクルコンポーネントのインストール」「oracleコンポーネントとサービスの削除」

参考URL:
http://otn.oracle.co.jp/document/products/oracle9i/920/windows.html
dabo
質問者

お礼

ありがとうございます。 参考になりました。 とりあえず問題も解決し、レジストリのクリア方法もわかりましたのでこの件はこれで締め切らせていただきます。

  • zealzany
  • ベストアンサー率35% (19/53)
回答No.4

>昔の古いoracleをインストールしたりしたのがまずかったのでしょうか という事なので、前回のレジストリーが一部残っていて書き換えが正常にできなかったのではないでしょうか。 下記は8iのアンインストールのページですが、hkey_localmachine\software\Apache Group が違うくらいで9iでもほぼ同じ構成です。 結果は保証できませんが、お手間でなければ1度9iをアンインストールし、URLを参考にレジストリーを整理、再インストールされてみてはいかがでしょうか。 ttp://www.iceprobe.net/oraoraadmin/admin_Uninstall.html

dabo
質問者

お礼

質問には書きませんでしたが、レジストリの削除も行っています。フォルダごとファイルを消すことも行いました。しかし、完全かというとあまりに多いので少しは残したと思います。まそれがいけないというといけないのでしょうが、完全になくなってるキーを再生くらいしてくれても良さそうです。実際多くのoracle何とかのキーはされてます。 oo4oだけがされないというのは解せません。

回答No.3

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

dabo
質問者

お礼

やはり固有の問題ですね。 昔の古いoracleをインストールしたりしたのがまずかったのでしょうか?(もちろんアンインストールしてあります) >Set OraSession = New OraSessionClass やはり失敗しますね。

dabo
質問者

補足

皆様にご助言いただきましてありがとうございました。 接続についてはできる様になりました。 別の動くマシンのレジストリ設定から、Oracle Objects For OLEに関するものを抜き出しコピー(書き換え)しました。 とりあえずの結論として 1.XOraSessionに関するレジストリキーが存在しなかった 2.XOraServerのCLSIDが間違っていた 3.oip9.dllを指定しているレジストリキーが存在しなかった ということです。 しかしインストーラからクライアントモジュールをインストール(何度も)しているのになぜそれらのキーが正常にできなかったのかが疑問の残るところです。 これらについて何かご存知でしたらまたよろしくお願いします。

  • mi-si
  • ベストアンサー率35% (200/567)
回答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がうまく参照出来てない場合はこちらを試してみるとか。

dabo
質問者

お礼

回答ありがとうございます。 %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)
回答No.1

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

dabo
質問者

お礼

回答ありがとうございます。 はずしてみても結果は同じでした。

関連するQ&A

  • VBAでoo4oを使用してINSERTする際にエラーが発生

    Excelのマクロでoo4oを使用してINSERTをしようとしています。 Dim OraSession As OraSession Dim OraDatabase As OraDatabase Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase(TNS, USER/PASS, 0&) OraSession.BeginTrans OraDatabase.ExecuteSQL("Insert Into tablename ( colum1, colum2) VALUES( '12345', '1234');") OraSession.BeginTrans OraDatabase.ExecuteSQLでINSERTしようとした場合に、「ORA-00911: 文字が無効です。」とエラーになってしまいます。 同じSQL文をSQL PLUS+で実行させた場合、正常にINSERTができます。 何か特別な処理をしないといけないのでしょうか。 よろしくお願いします。

  • VB6でのPL/SQLの実行について

    現在VB6(SP6)でORACLEのデータベースに接続後、プロシージャを実行してOUTのパラメータを取得したいと思ってプログラムを作っております。 ORACLEへの接続はいろいろ調べてできたのですが、プロシージャの実行(呼び出し)のしかたがわからず困っております。 PL/SQL(プロシージャ名"TEST_DATA") out1 = TEST(OUTパラメータ1) out2 = これはテストです。(OUTパラメータ2) VB6(SP6) Dim OraSession As OraSession Dim OraDatabase As OraDatabase Dim OraDynaset As OraDynaset Dim P1 AS String Dim P2AS String '接続処理 Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase("TEST", "TEST/TEST DB_DEFAULT) OraSession.BeginTrans 'ここでPL/SQLを実行して、パラーメタを取得したいです。 '取得したパラメータをセット P1 = パラメータ1(TEST) P2 = パラメータ1(これはテストです。) OraSession.CommitTrans '結果表示 Call MsgBox(P1 & "結果" & P2) ご教授のほどをお願いいたします。

  • vbからoracleへの接続

    vbからoracleへの接続について教えて下さい。 ORACLEデータベースにoo4oを使って接続をしているのですが、Oracleクライアントをインストール済みのPCでは何ら問題なく接続できます。 OracleクライアントをインストールしていないPCではエラーメッセージがでてしまいます。 処理はこんな感じです... Public ssOra As Object       Public dbOra As OraDatabase Public dynOra As OraDynaset Set ssOra = CreateObject("OracleInProcServer.XOraSession") Set dbOra = ssOra.OpenDatabase("HRH", "HRH00/HRH00", 0&) Set dynOra = dbOra.DbCreateDynaset("select * from 消耗品_注文履歴", 0&) Set ssOra... のところでエラーとなってしまいます。エラー内容は ********実行時エラー'429'***************************** ActiveXコンポーネントはオブジェクトを作成できません ************************************************** activeX,oracle関連のDLLファイルは参照設定に登録しています。 これを解決するためにはOracleクライアントをインストールするしかないのでしょうか? また、インストールしたらエラーは本当になくなるのでしょうか? 皆様宜しくお願いします。 ちなみにクライアントPCはOS:WIN95 oracleバージョン8.1.7です

  • DBの接続について

    昨日も同じ質問したのですが また、助けてください DBの接続状態がしりたいのですが DBの接続状態を認識させるために If OraDatabase.State = adStateClosed Then DB_Connect End If ってコーディングいたしました が、一行目でエラー発生でその後の処理が 通りません DB接続部はこんな感じです。 Private Sub DB_Connect() On Error GoTo ERR Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase("ALARM", "ALARM/SHINKO", 0&) End Sub どうか助けてください お願いします 開発環境VB6.0 DBはオラクル9iです

  • ASPでoo4o接続ができません。

    WindowsXPpro(IIS6.0) + Orale9i + ASPで開発をしていますが、 oo4o接続がうまくいかず困っています。 IISとDBサーバは同マシン内の同ドライブ(C)にあり、 現在、やむを得ず、DBサーバにて開発を行っています。 色々調べ、以下のことは全て試してみましたが、 どうしても以下のエラーが出てしまいます。 なお、VB6.0で同じDBにoo4oで接続するサンプルを作って試しましたが、 そちらはうまくいきました。 わかる方、どうかご教授ください。 【試したこと&確認したこと】 ・oo4oはインストールされている ・oip9.dll のレジストリ登録(念のため) ・ora92フォルダに、インターネットゲストアカウントの  読み取り実行&書き込みのアクセス許可を与える  (ちなみにフルコントロール許可を与えてもダメでした) ・SQLNET.oraファイルを以下のように書き換え  SQLNET.AUTHENTICATION_SERVICES= (NONE) 【global.asa】 <OBJECT RUNAT=Server SCOPE=Application ID=OraSession PROGID="OracleInProcServer.XOraSession"> </OBJECT> <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnStart 'OO4O用の設定(Net*8を使用してOracle8に接続する) Set Session("OraDatabase") = OraSession.DbOpenDatabase ("sun151_ora803", "scott/tiger", Clng(3)) Set Session("OraDynaset") = Session ("OraDatabase").DbCreateDynaset("select * from emp order by empno", Clng(4)) End Sub Sub Session_OnEnd Set Session("OraDynaset") = Nothing Set Session("OraDatabase") = Nothing End Sub </SCRIPT> 【エラー内容】 Microsoft VBScript 実行時エラー (0x800A01FB) 例外が発生しました。: 'OraSession.DbOpenDatabase'

  • VB.NETでORACLEにoo4o接続した後、SELECT文を使う手順は?

    mdbのADO接続による方法は例文が多くあったので、それを参考に作り込むことができて完成してたのですが、mdb&ADO接続自体が却下されて、ORACLE&oo4oで一から作り直しとなりました。 ORACLEへのoo4o接続までは調べて出来た(----以下)のですが、その先のデータ抽出方法が良くわかりません。 "MASTER_SYAIN"テーブルから、社員コード(例:Syaincd=123)で社員名(Syainnm)を取ってきたいのですが。 以下の感じのSELECT文になると思うのですが、これをいきなり記述してもエラーになりますよね? 前後の具体的な記述はどうなりますでしょうか? ホントすいません・・・SQL初心者で。 SELECT Syainnm FROM MASTER_SYAIN WHERE Syaincd = '123' ------------------------------ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  Dim dbname As String  Dim cnuser As String  On Error GoTo errorHandler    StatusBar1.Panels(0).Text = "データベースに接続中・・・"  dbname = "oracle"  cnuser = "user/pass"  OraSession = CreateObject("OracleInProcServer.XOraSession")  OraDatabase = OraSession.OpenDatabase(dbname, cnuser, ORADB_DEFAULT)  StatusBar1.Panels(0).Text = "データベース接続完了。"  On Error GoTo 0  Exit Sub errorHandler:  If Err.Number = ORACLE_DB_CONNECTING_FAILURE Then   StatusBar1.Panels(0).Text = "データベースに接続出来ません。" & Chr(10) & "エラーコード:" & Err.Number   Resume Next  End If  Error Err.Number End Sub

  • Excel VBA で Oracle CLOB型カラムの文字列を取得する方法

    Excel VBA を使用して、Oracleに格納されている文字列を取得しようとしています。 Number型やVarchar2型のカラムからは問題なく取得できるようになったのですが、CLOB型で文字列を格納しているカラムからの取得でつまずいています。 自分の書いた方法だと、1600バイト以上の文字列が格納されているとエラー文字が返ってきてしまいます。 これ以上の文字数を取得する方法について教えてもらえないでしょうか? '---// コード抜粋 ココから //--- 'ORAセッション生成 Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'ORADB生成 Set OraDatabase = OraSession.OpenDatabase(<<dbname>>, <<id>> & "/" & <<passwd>>, 0) Dim SQL As String '一覧取得用SQL Dim RS As Object 'レコードセット SQL = " SELECT <<<clob_col_name>> FROM <<table_name>> " Set RS = OraDatabase.DbCreateDynaset(SQL, 0&) Range("A1").Value = RS.fields("<<clob_col_name>>").GetChunk(0, 3263) RS.Close '---// コード抜粋 ココまで //--- 環境は、Excel 2003、Oracle 9iです。 ひとつよろしくお願いいたします。

  • OracleとVB6.0を勉強している学生です。

    OracleとVB6.0を勉強している学生です。 あるテーブルから全てのレコードを抽出してCSVで出力させたいのですが なかなかうまく行かないので悩んでおります。 TEST1 というテーブルには名前、年齢、住所、電話番号etc というフィールドがあり 数100件のレコードがある場合 その全てのレコードをcsvに出力する所で詰まって おります。 記述しているコードですが 'Oracleとの接続 Set OraSession = CreateObject("OracleInProcServer.XOrasession") 'DataBaseとの接続 Set OraDataBase = OraSession.DbOpenDataBASE(ORADBNAME, ORADBCONECT, 0&) SQL = "SELECT * FROM TEST1" Set Oradynaset = OraDataBase.DbCreateDynaset(SQL, ORADYN_READONLY) Do Until Oradynaset.EOF '出力 Open OUTPATH &"test1" & ".csv" For Append As #10 Len = 3 Print #10, ????????? ←この場所の記述の仕方 Close #10 step1: Loop Exit Sub End Sub Printでどう記述すればTEST1のレコード全てをCSVに出力できるかがわかりません。 DBへの接続は成功しております。 何卒よろしくお願いします。

  • VBからOracle接続が出来ません。

    こんにちは。 VisualBasic6.0EnterprizeEdition から Oracle8i の接続を試みております。 接続が出来ません。コードは本のものをそのまま書いたので、間違いはないと思います。 Private Function OraOPN() As Boolean Dim strDB As String * 30 'サービス名 Dim strUID As String * 30 'ユーザー名 Dim strPWD As String * 30 'パスワード Dim strUP As String Dim strMSG As String 'エラー時のメッセージ On Error GoTo Ora_Error strDB = Trim(txtLogon(2).Text) strUID = Trim(txtLogon(0).Text) strPWD = Trim(txtLogon(1).Text) strUP = strUID & "/" & strPWD strMSG = "データベースへの接続ができません" Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&) OraOPN = True Exit Function Ora_Error: OraOPN = False Call MsgBox(strMSG & vbCrLf & " システム管理者に連絡してください" & vbCrLf & vbCrLf & "", vbCritical) End End Function 以上のコードで、接続できません。本に書いてあるとおりそのままのコードです。オラクルサーバとVBプログラムは同一マシン上に置いてあります。 私は、Java専門でVBはわかりません。誰かわかる方がいたら、教えてください。よろしくお願いします。

  • ASPからOracle9iへの接続方法

    環境は以下のように変更となりました。 ・サーバーOS:WindowsNT SP6→Windows2000Server ・DB:Oracle8.0.5→Oracle9i ・ASP ・クライアント:Oracle8.1.6のまま ASPでWebからoo4oでOracleDBに接続します。 Oracle8で動作していたASPが、Oracle9iに変更した ところ、ASPの動作で以下エラーがでてしまいます。  エラー内容:   「orasession作成中にエラーが発生しました」 oo4oでの接続は以下のように記述しています。  Set Application("OraSession") =  Server.CreateObjec       ("OracleInProcServer.XOraSession") どんな原因が考えられますでしょうか? お教え下さい。よろしくお願いいたします。

専門家に質問してみよう