• 締切済み

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'

みんなの回答

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.2

>VB6.0で同じDBにoo4oで接続するサンプルを作って試しましたが とのことですが、そのときにはCreateObjectでやったのですか? それとも、参照設定でやったのでしょうか?

ninpu94
質問者

お礼

返事が遅れて、申し訳ありません。 VB6.0での接続は、CreateObjectで行いました。 参照設定では何も追加していません。

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.1

エラー内容としてオラクルエラーじゃないようですから設定云々じゃないと思います。 <object>の部分が怪しいような気が。。。 ためしに<object>を使用せずに、OraSession自体をCreateしてみたらいかがでしょうか? <例> Dim OraSession Set OraSession = CreateObject("OracleInProcServer.XOraSession")

ninpu94
質問者

お礼

ご回答ありがとうございます。 セッションオブジェクトを使用する方法と、 ご指摘のOraSessionを変数に持つ方法、 どちらも試していますが、どちらでもCreateObjectの行で同じエラーが発生してしまいます。 他に、何か気になった点があれば、どんな小さなことでも構わないのでご指摘ください!

関連するQ&A

  • oracleを利用できません。(global.asa利用)

    asp + oracle + oo4oをglobal.asaファイルを利用して プログラムを組むことになりまして、ネットでサンプルファイルを見つけまして 実行したところエラーになっていまいます。 サンプルは以下の通りです。 ----global.asa--- 'OO4O用の設定 <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> ---global.asaここまで--- ---emp_o1.asp--- <%@ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>emp_o1.asp</TITLE> </HEAD> <BODY> <% '変数の設定 Dim OraDatabase Dim OraDynaset Dim OraFields Dim fieldNum Dim recNum Set OraDatabase = Session("OraDatabase")   ↑ここでエラーがでます。(line17) Set OraDynaset = Session("OraDynaset") --以下略 ---emp_o1.aspここまで--- エラーとして エラー タイプ Microsoft VBScript 実行時エラー (0x800A01A8) オブジェクトがありません。: '[undefined]' /rhc/emp_o1.asp, line 17 というのが出てしまいます。 VBとoracleの経験はあるのですが、aspは今回初めてです。 しょうもない質問かもしれませんが、どなたかよろしく お願いいたします。

  • 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ができます。 何か特別な処理をしないといけないのでしょうか。 よろしくお願いします。

  • データ型について(oo4o)

    OraSession型ってバージョンによって 使えたり使えなかったりするんですか? 例えば下記のように記述してあるプログラムを Public OraSession As OraSession 'オラクルセッション用変数名 Oracle8i8.1.5では大丈夫だったのに、Oracle8i8.1.7にしたら Object型にしないと駄目だったんです。 OraSessionというデータ型は避けたほうがいいのでしょうか。 ちなみにVB5.0のプログラムをVB6.0でコンパイルしようと して起きた問題です。 VBとoo4oのバージョンの問題でもあるんでしょうか。

  • 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") どんな原因が考えられますでしょうか? お教え下さい。よろしくお願いいたします。

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

  • 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です

  • Oracle12cとのoo4o接続

    サーバー上のDBが「Oracle 12c(12.2)」です。 クライアントは「Windows7」で「Oracle Client 11.2.0.4」がインストールされている場合、クライアント上のプログラムから、サーバー上のOracleデータベースに「oo4o」で接続できますでしょうか?

  • VBからoo4o接続でストアドを呼ぶ方法

    お世話になります、 VBからoo4o接続でストアドを呼ぶ方法を探しています。 <現在の状況> ■ストアドパッケージ ・次のように値を返すストアドパッケージがあるとします。これを CreatePLSQLDynaset で実行して、レコードセットを取得します。(OraDynaset) create or replace package testp is procedure GetTestm(key in number, cu out CHAR); end; / create or replace package body testp is procedure GetTestm(key in number,cu out CHAR) is begin select NAME into cu from TEMP where STATUS=key; end; end; / ■VBのボタンイベント Private Sub Command1_Click() Dim dbname Dim cnuser '** サービス、ユーザ設定 dbname = "aaa" cnuser = "bb/bb" '** oo4o 接続 Set GoORASESSION = CreateObject("OracleInProcServer.XOraSession")  Set GoORADATABASE = GoORASESSION.OpenDatabase(dbname, cnuser, &H0) '** リクエリレコードセットオープン Set Recordset = GoORADATABASE.CreatePLSQLDynaset("Begin testp.GetTestm (1,:cu); end;", "cu", &H0) End Sub これを実行したところ以下のようなエラーが出ました <エラー> ____________________________ 実行時エラー '440' SQL実行エラー,ORA-06550:行:1、列:7 PLS-00306:'GETTESTM'の呼び出しで、引数の数または型が正しくありません ORA-06550:行:1、列:7 PL/SQL:Statement ignored _______________________________ というエラーが出てしまいます、引数の数は合っていると思うのですが、どこがお菓子のでしょうか? よろしくお願いします。

  • 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) ご教授のほどをお願いいたします。

  • 01722 数値が無効です

    ドラえもん 2012-10-29(月) 10:30 ホームページで公開されていたVBAを流用して、EXCELからデータベースの更新、削除をしようとしています。 データベースの更新に関してはうまく動作するのですが、データ削除を実施すると、 440)データをフェッチ中にエラーが発生しました。ORA-01722数値が無効です。 というエラーが発生してしまいます。 01722のエラー内容をホームページ並びに、本サイトで検索したのですが、 データの型が違うという内容で、類似の内容が無い状況でした。 型が違うという内容に対して、何をどうしたらよいかが分かりません。 コーディングのミスを指摘いただきたく よろしくお願いいたします。 VBAまったくの初心者です。 下記は、マクロの構成です。 (1)B3からR***の領域にデータベースからダウンロードしたデータが表示される。  ***は列数でデータベースの項目数で変化する (2)B2からR2には項目名称が表示されている。 (3)編集用の領域はT2からAJ2に(2)と同じ項目名を表示する。 (4)編集用のデータ領域はT3からAJ20まで。 ※ID並びにパスワードは実際のものから変更しています。  ORACLE9.0 EXCEL2003 ------------------------------------------------------------- '「データの削除」ボタン押下後の処理 ' oo4o使用時 Private Sub btnDeleteDataoo4o_Click() On Error GoTo ERR_HANDLER 'oo4o用のオブジェクト変数の宣言 Dim OraSession As Object 'セッション Dim OraDatabase As Object 'データベース Dim rs As Object 'データセット(レコードセット) Dim rownum As Long Dim colnum As Integer Dim sSQL As String '削除対象のみを抽出するSQL文の作成 sSQL = "select * from M_TOOL_MEISAI where LINECD=" & ActiveSheet.Cells(3, 20) For rownum = 4 To 20 If ActiveSheet.Cells(rownum, 20) = "" Then Exit For End If sSQL = sSQL & " OR LINECD=" & ActiveSheet.Cells(rownum, 20) Next 'oo4oセッションオブジェクトの生成 Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'oo4oデータベースオブジェクトの生成(DBへUserID:○、パスワード:×で接続) Set OraDatabase = OraSession.OpenDatabase(ActiveSheet.Cells(26, 1), "○/×", 0&) 'oo4oデータセット(レコードセット)の生成(削除対象データのみを返すレコードセットの生成) Set rs = OraDatabase.CreateDynaset(sSQL, 0&) 'レコードセット内の全レコードの削除 Do Until rs.EOF rs.Delete rs.MoveNext Loop 'オブジェクトのクローズ rs.Close 'データ表示の更新 btnGetDataoo4o_Click QUIT_OPER: 'オブジェクト変数用に確保したメモリの開放 Set rs = Nothing Set OraDatabase = Nothing Set OraSession = Nothing Exit Sub ERR_HANDLER: 'エラー処理 'エラー番号とエラー内容の表示 MsgBox Err.Number & ")" & Err.Description Err.Clear GoTo QUIT_OPER End Sub ------------------------------------------------------------------------------- 以上がエラーが発生するVBA 下記は、更新処理で正しく動作するVBA ------------------------------------------------------------------------------- '「データの更新」ボタン押下後の処理 ' oo4o使用時 Private Sub btnUpdateDataoo4o_Click() On Error GoTo ERR_HANDLER 'oo4o用のオブジェクト変数の宣言 Dim OraSession As Object 'セッション Dim OraDatabase As Object 'データベース Dim rs As Object 'データセット(レコードセット) Dim rownum As Long Dim colnum As Integer 'oo4oセッションオブジェクトの生成 Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'oo4oデータベースオブジェクトの生成(DBへUserID:○、パスワード:×で接続) Set OraDatabase = OraSession.OpenDatabase(ActiveSheet.Cells(26, 1), "○/×", 0&) 'oo4oデータセット(レコードセット)の生成(全データを返すレコードセットの生成) Set rs = OraDatabase.CreateDynaset("select * from M_TOOL_MEISAI", 0&) 'データの更新 For rownum = 3 To 20 If ActiveSheet.Cells(rownum, 20) = "" Then Exit For End If '更新対象データの検索 rs.Findfirst ("LINECD=" & ActiveSheet.Cells(rownum, 20)) '編集モードに設定 rs.Edit For colnum = 1 To rs.Fields.Count - 1 Select Case rs(colnum).Type Case 10 rs(colnum).Value = ActiveSheet.Cells(rownum, colnum + 20) Case 8 rs(colnum).Value = CDate(ActiveSheet.Cells(rownum, colnum + 20)) Case Else rs(colnum).Value = ActiveSheet.Cells(rownum, colnum + 20) End Select Next rs.Update Next 'オブジェクトのクローズ rs.Close 'データ表示の更新 btnGetDataADO_Click QUIT_OPER: 'オブジェクト変数用に確保したメモリの開放 Set rs = Nothing Set OraDatabase = Nothing Set OraSession = Nothing Exit Sub ERR_HANDLER: 'エラー処理 'エラー番号とエラー内容の表示 MsgBox Err.Number & ")" & Err.Description Err.Clear GoTo QUIT_OPER End Sub

専門家に質問してみよう