プロが教えるわが家の防犯対策術!

こんにちは。

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はわかりません。誰かわかる方がいたら、教えてください。よろしくお願いします。

A 回答 (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鯖なので、日中は実験済みのお答えは即座にはお答えできません。

この回答への補足

どうも,ありがとうございました。

おかげさまで、解決できました。

Set OraDatabase = OraSession.OpenDatabase("", strUP, &H1&)
としたら、できました。

これで、アプリケーションが作れそうです。
どうもありがとうございました。

補足日時:2002/10/24 15:23
    • good
    • 0
この回答へのお礼

どうも、2度もご回答ありがとうございます。私も

>Net8 Easy Configを使用してDBを指定するような、設定はいらないと言うことです。
については、その様な意味で書いていただいたんだとは、思っていましたよ。

>Set OraDatabase = OraSession.OpenDatabase("", strUP, &H1&) という方法でもやったのですが、確かできなかったような気がしますが、

>Set OraDatabase = OraSession.OpenDatabase("", "SQLPLUSで使用しているID/SQLPLUSで使用しているPASS", &H1&)
でもう一度試してみようと思っています。どうもご親切にありがとうございます。

日中、頭を冷やして色々やろうと思います。ちょっと昨日は混乱していましたので。。

どうもありがとうございました。

お礼日時:2002/10/24 07:20

>Set OraSession = CreateObject("OracleInProcServer.XOraSession")


>Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&)

OraSessionとOraDatabaseの定義しているのでしょうか?
    • good
    • 0
この回答へのお礼

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

その辺りは定義してあります。標準モジュールを他に定義して、そこで定義してあります。

すみません。なにしろ、VBを本格的に扱うのは初めてな者ですから。しかし、その辺は大丈夫です。

Javaをやっていたんで、その辺の事は理解したつもりです。どうもありがとうございました。ではまたよろしくお願いします。

お礼日時:2002/10/24 07:12

>Net8 Easy Config



oo4oだったら使用しなくても大丈夫では?
自宅の環境のOracle8.1.6は、設定しないでもつながりましたよ
    • good
    • 0
この回答へのお礼

どうもご返事ありがとうございます。

私もつい先ほどまで、ホームページを回っていたんですが、oo4oという接続は、確かにNet8 Easy Configを使わなくても良いと書いてありました。

そう考えるとなにがおかしいのかな?と思っています。ホスト文字列がやはり問題なのかな?とも思っているんですが。。

明日、会社で色々とやってみようと思っています。何しろ自宅では、方法がないので。。。自宅にOracleがあるんですね。うらやましいです。どうもご返事ありがとうございました。では、また。

お礼日時:2002/10/23 21:04

OracleのNet8 Easy Configで、


サービスの追加はされていますか?
strDB には、そのサービス名を入れます。
    • good
    • 0
この回答へのお礼

どうもご返事ありがとうございます。

Net8 Easy Config というのは、分かりませんが、SQL*PLUS を起動する時に入れる「ホスト文字列」の事ですよね。会社のパソコンはSQL*PLUS を起動する際に、パスワードとユーザーは入力しますが、ホスト文字列は空白のままなので、今回も何も入力しないまま(strDBには何も入らない)接続を試みました。その辺りがおかしいのですかね?

どうもご回答ありがとうございます。自分なりに調べてみます。また気が向いたらご返事ください。よろしくお願いします。

お礼日時:2002/10/23 19:29

>Dim strDB As String * 30 'サービス名


>Dim strUID As String * 30 'ユーザー名
>Dim strPWD As String * 30 'パスワード
なぜ固定長なんだろうか分らないけど、、、


Dim strDBAs String 'サービス名
Dim strUIDAs String 'ユーザー名
Dim strPWD As String 'パスワード
こうしてみては?

それと
>On Error GoTo Ora_Error
をはずして、どのようなエラーメッセージが出ているかが分ると答えやすいです。

参考URL:http://homepage2.nifty.com/inform/vbdb/oo4o_basi …
    • good
    • 0
この回答へのお礼

どうも、ご回答ありがとうございます。今は自宅で、会社のパソコンでしか使えないものですから。。。

固定長の件につきましては、本に書いてある通りやったので、僕もなぜだか分かりません。明日、固定長をなくしてみます。

On Error Go to Ora_Error を外してエラーも見てみます。どうもありがとうございました。ではでは。

お礼日時:2002/10/23 19:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています