• ベストアンサー

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は今回初めてです。 しょうもない質問かもしれませんが、どなたかよろしく お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • YK29
  • ベストアンサー率100% (1/1)
回答No.3

WINDOWS2000とWindows2003で微妙に違うのですが、いずれにしてもOracleHOMEデイレクトリにアクセス権を与える必要があります。 その与え方を以下に示します。 (1) エクスプロ-ラからORA92デイレクトリを右クリック。 (2) セキュリティタブをクリック。 (3) アクセス権のあるユ-ザが表示されるはずです。   追加ボタンをクリックして、IUSR_<コンピュ-タ名>とASPNETユ-ザを追加してください。 (IUSR_の後は確かコンピュ-タ名のはずです。) (4) 追加したら、このユ-ザに対して、いろんなアクセス権がたくさんありますけど必要な例えば読み取り書き込みとかの権限にチェックを入れて適用・OKボタンをクリックすることで権限を与えます。 以上でIIS/ASPからも利用できるはずなんですけどね~、できなかったらまた連絡してください。 できなかったらその時、OSも教えてください。                        以上

その他の回答 (2)

  • YK29
  • ベストアンサー率100% (1/1)
回答No.2

11月18日のことなので、もう解決されましたかね。 されていなかったらこんなケ-スもあるということで、読んでください。 Oracle8Iだったら大丈夫と思うのですが、Oracle9I以降のバ-ジョンだとインスト-ルの時にOracleHOMEに管理者グル-プでのセキュリティがかかります。 (あくまでもNTFSファイルシステムの時だけですが) そしてIIS/ASPは、ロ-カルユ-ザ(規定値でIIS_<マシン名>)でWEBサ-バにログインします。 するとアクセス権がないということでOO4Oの接続に失敗します。 もしまだ未解決でしたら連絡ください。 対応策を連絡します。                 以上

hetazo
質問者

お礼

YK29さん、はじめまして。 ご教授ありがおつございます。 結構時間がたってしまっていたのですが、未だ解決には 至っていませんでした。VBやSQLなどの知識はあるの ですが、インターネット系にはどうも弱いです。 申し訳ないですが、アドバイスいただけると助かります。 よろしくお願い致します。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

Oracleとoo4oのバージョンは?エラーの内容は? Oracle8i 8.1.7以降ならoo4oのヘルプに「Active Server Pages(ASP)でのOO4Oオートメーションの使用」ってページがありますよ。

hetazo
質問者

お礼

taka_tetsuさん、早速の回答ありがとうございます。 今までヘルプがあるなんて気づきませんでした。 オラクルのバージョンは9iです。 早速ヘルプの通りに実行してみたのですが、 Microsoft VBScript 実行時エラー (0x800A01FB) 例外が発生しました。: 'GetDatabaseFromPool' というエラーが出てしまいました。何かもうちょっと 根本的にどこか間違っているのかもせれません。ASPの 事は全く初心者なので、もう少し勉強してみます。 ありがとうございました。

関連するQ&A

  • 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'

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

  • Global.asaについて

    お世話になります。 今回ASPを使用してアプリケーション開発をしております。 データベースに接続して、データを拾おうと思うのですが、そのデータベースへの宣言などをGlobal.asaでしようと試みている途中で止まってしまいましたので・・・ Global.asaはルートディレクトリにおいてあり、IISでの設定はセッションONになっております。 テスト的に実行するため、 <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart Application("test") = "" End Sub Sub Session_OnStart Application.Lock Application("test") = "ttt" Application.UnLock End Sub </SCRIPT> とGlobal.asaには記述してあります。 ASPには <% Response.Write test %> と記述してありまして、実行しますと「ttt」と表示されません。なにか間違っている部分はあるのでしょうか?

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

  • 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

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

  • 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への接続は成功しております。 何卒よろしくお願いします。

  • ASPでoo4oを使ってのOracleへの接続について

    ASPとoo4oについて質問させていただきます。 ASPファイルのソースの中でVBScriptでoo4oを使ってOracleに接続する 処理を作成しています。 構文に間違いがあるのか、何度もブラウザでエラーが出てしまいます。 基本の部分だけでもいいので、VBScriptでoo4oを使って Oracleに接続する部分の記述を教えてください。 よろしくお願いします。

  • セル値参照でデータベースから範囲抽出

    セル値を元にデータ抽出する内容でVBAが正しく動作せず困っています。 V_JISKDATEの列に下記の様に文字列日付が入っています。 201210010830 (2012年10月1日8時30分というデータです) 月単位でデータをEXCELに取り出したいので、 下記の様に範囲指定を実施しました。 これに関しては正しく動作します。 Set rs = OraDatabase.CreateDynaset("select * from T_MANHOUR_DETAILS where V_JISKSTDATE> '201210' AND V_JISKSTDATE <'201211'", 0&) 次に範囲指定をセル値から参照して実行させたいので、 セル値を変数扱いで下記内容を追加しました。 A10に201210 A11に201211 が入っています。 下記、追加及び変更部 Dim ST As String Dim Ed As String ST = Range("A10") Ed = Range("A11")   … where V_JISKSTDATE > 'ST' AND V_JISKSTDATE < 'ED'", 0&) これだとだんまりで正しく動作しません。 変数部の'を取り下記の様にすると、   … where V_JISKSTDATE > ST AND V_JISKSTDATE < ED", 0&) 実行時エラー'440': オートメーションエラーです。 とのエラーが出ます。 文字を<>で比較するのが怪しい感じがするのですが…。 どこを直せばよいのか教えていただきたく。 下記は10月分が正しく抽出される全文です。 ---------------------------------------------------------- Private Sub btnGetDataoo4o_Click() 'oo4o用のオブジェクト変数の宣言 Dim OraSession As Object 'セッション Dim OraDatabase As Object 'データベース Dim rs As Object 'データセット(レコードセット) Dim rownum As Long Dim colnum As Integer 'セッションオブジェクトの生成 Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'oo4oデータベースオブジェクトの生成(DBへUserID:ID、パスワード:PWで接続) Set OraDatabase = OraSession.OpenDatabase(ActiveSheet.Cells(26, 1), "ID/PW", 0&) 'oo4oデータセット(レコードセット)の生成(全データを返すレコードセットの生成) Set rs = OraDatabase.CreateDynaset("select * from T_MANHOUR_DETAILS where V_JISKSTDATE> '201210' AND V_JISKSTDATE <'201211'", 0&) 'すでに表示されている内容のクリア Call ClearDisp 'フィールド名の表示 For colnum = 0 To rs.Fields.Count - 1 ActiveSheet.Cells(2, colnum + 3) = rs(colnum).Name Next 'データの表示 rownum = 0 Do Until rs.EOF For colnum = 0 To rs.Fields.Count - 1 ActiveSheet.Cells(rownum + 3, colnum + 3) = rs(colnum).Value Next rs.MoveNext rownum = rownum + 1 Loop 'セル幅の自動調整 ' ActiveSheet.Columns("B:AU").EntireColumn.AutoFit 'オブジェクトのクローズ rs.Close '各種オブジェクトの開放 Set rs = Nothing Set OraDatabase = Nothing Set OraSession = Nothing End Sub ---------------------------------------------------------- EXCEL2003 ORACLE V9.0です

専門家に質問してみよう