- ベストアンサー
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はわかりません。誰かわかる方がいたら、教えてください。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
言葉が足りてないようなので、再度説明します。 >Net8 Easy Configを使わなくても良いと書いてありました。 「全く使用しないでもよい」と言うわけでもないのですが、、、 普通なら使用します。 >オラクルサーバとVBプログラムは同一マシン上 >会社のパソコンはSQL*PLUS を起動する際に、パスワードとユーザーは入力しますが、ホスト文字列は空白のままなので とあるので、Net8 Easy Configを使用してDBを指定するような、設定はいらないと言うことです。 ですので >Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&) の部分を Set OraDatabase = OraSession.OpenDatabase("", strUP, &H1&) とすることで、Net8 Easy Configを使用しないで接続できると思ったのです。 次の変数を使用しない値を直で与えて実行してもだめでしょうか? Set OraDatabase = OraSession.OpenDatabase("", "SQLPLUSで使用しているID/SQLPLUSで使用しているPASS", &H1&) ちなみ現在会社の環境はSQL鯖なので、日中は実験済みのお答えは即座にはお答えできません。
その他の回答 (4)
- plhukat
- ベストアンサー率0% (0/1)
>Set OraSession = CreateObject("OracleInProcServer.XOraSession") >Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&) OraSessionとOraDatabaseの定義しているのでしょうか?
お礼
ご回答どうもありがとうございます。 その辺りは定義してあります。標準モジュールを他に定義して、そこで定義してあります。 すみません。なにしろ、VBを本格的に扱うのは初めてな者ですから。しかし、その辺は大丈夫です。 Javaをやっていたんで、その辺の事は理解したつもりです。どうもありがとうございました。ではまたよろしくお願いします。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
>Net8 Easy Config oo4oだったら使用しなくても大丈夫では? 自宅の環境のOracle8.1.6は、設定しないでもつながりましたよ
お礼
どうもご返事ありがとうございます。 私もつい先ほどまで、ホームページを回っていたんですが、oo4oという接続は、確かにNet8 Easy Configを使わなくても良いと書いてありました。 そう考えるとなにがおかしいのかな?と思っています。ホスト文字列がやはり問題なのかな?とも思っているんですが。。 明日、会社で色々とやってみようと思っています。何しろ自宅では、方法がないので。。。自宅にOracleがあるんですね。うらやましいです。どうもご返事ありがとうございました。では、また。
- yuu200
- ベストアンサー率20% (5/24)
OracleのNet8 Easy Configで、 サービスの追加はされていますか? strDB には、そのサービス名を入れます。
お礼
どうもご返事ありがとうございます。 Net8 Easy Config というのは、分かりませんが、SQL*PLUS を起動する時に入れる「ホスト文字列」の事ですよね。会社のパソコンはSQL*PLUS を起動する際に、パスワードとユーザーは入力しますが、ホスト文字列は空白のままなので、今回も何も入力しないまま(strDBには何も入らない)接続を試みました。その辺りがおかしいのですかね? どうもご回答ありがとうございます。自分なりに調べてみます。また気が向いたらご返事ください。よろしくお願いします。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
>Dim strDB As String * 30 'サービス名 >Dim strUID As String * 30 'ユーザー名 >Dim strPWD As String * 30 'パスワード なぜ固定長なんだろうか分らないけど、、、 Dim strDB As String 'サービス名 Dim strUID As String 'ユーザー名 Dim strPWD As String 'パスワード こうしてみては? それと >On Error GoTo Ora_Error をはずして、どのようなエラーメッセージが出ているかが分ると答えやすいです。
お礼
どうも、ご回答ありがとうございます。今は自宅で、会社のパソコンでしか使えないものですから。。。 固定長の件につきましては、本に書いてある通りやったので、僕もなぜだか分かりません。明日、固定長をなくしてみます。 On Error Go to Ora_Error を外してエラーも見てみます。どうもありがとうございました。ではでは。
お礼
どうも、2度もご回答ありがとうございます。私も >Net8 Easy Configを使用してDBを指定するような、設定はいらないと言うことです。 については、その様な意味で書いていただいたんだとは、思っていましたよ。 >Set OraDatabase = OraSession.OpenDatabase("", strUP, &H1&) という方法でもやったのですが、確かできなかったような気がしますが、 >Set OraDatabase = OraSession.OpenDatabase("", "SQLPLUSで使用しているID/SQLPLUSで使用しているPASS", &H1&) でもう一度試してみようと思っています。どうもご親切にありがとうございます。 日中、頭を冷やして色々やろうと思います。ちょっと昨日は混乱していましたので。。 どうもありがとうございました。
補足
どうも,ありがとうございました。 おかげさまで、解決できました。 Set OraDatabase = OraSession.OpenDatabase("", strUP, &H1&) としたら、できました。 これで、アプリケーションが作れそうです。 どうもありがとうございました。