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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

oo4oは、Net8が必須です。

(つまりOracleクライアントが必要)

Oracleのデータベースのアクセスは以下のようになっています。

サーバー側
Oracle
 |
Net8サーバー
 |
-------
 | クライアント側
Net8クライアント
 |
oo4o
 |
VBアプリケーションなど

VBのディストリビューションウィザードで、oo4oは配布できますが、Net8クライアントは、多分できないと思います。個別にインストールする必要があります。
当然、Net8クライアントの設定(TNSNames.oraなど)の設定も必要になります。
oo4oのNet8付きのパッケージもあったと思います。(配布条件などは未確認)探してみてください。

インストールしたらエラーは本当になくなるかどうかは、分かりません。テストしてみてください。(必要ソフトがそろっていて、設定もしっかりして、ソフトにバグがなければエラーはないでしょうとしかいえません。)
    • good
    • 0

クライアントを入れずに参照しようということを考えたことも無いので事実はわからないですが。



クライアントでNet8設定されていない場合
SIDを指定したところでどこのOracleServerを参照にいくか判断できないと思います。
SIDで「HRH」と指定したところで、マシンにしてみれば
「それってどこですか?」状態じゃないでしょうか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

上記の環境でプログラムを作成しています。
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でそのクライアントパッ...続きを読む

Aベストアンサー

通常は正しく削除されてしかるべきなのでしょうが、レジストリにキーが残った状態になることもありますので
・・・
完全削除についてはリリースノートにも記載されております。

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

QOracleInProcServer.XOraSession オブジェクト作成時の参照ファイル

VBで OracleInProcServer.XOraSession を使い、
oracle9iのサーバーへ接続したいのですが、
現在10gのクライアントがインストールされており、
9iをインストールしてもサーバーへ接続できません。

レジストリを見るとoo4oは10gへ向いているようですが、9i用のDAOを利用したいです。

例えばOracleInProcServer.XOraSessionを利用したときに9iのoo4oを参照したいのですが、どのような方法があるでしょうか?

宜しくお願い致します。

Aベストアンサー

10gと9iの連携はしたことがありませんが、9iクライアントから8iサーバへの接続はしたことがあります。

サーバが9iだから9iクライアントを利用したいというだけであれば、10gクライアントからでも接続できませんか?

どうしても9iを利用したいのであれば、参照設定に入れてしまえばできませんか?
参照設定に
[OracleInProcServer X.X Type Library]
が二つ存在していませんか?

環境が無いままに話をしているので、想像で話をしております。すいません。

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

こんにちは。

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_Erro...続きを読む

Aベストアンサー

言葉が足りてないようなので、再度説明します。

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

言葉が足りてないようなので、再度説明します。

>Net8 Easy Configを使わなくても良いと書いてありました。
「全く使用しないでもよい」と言うわけでもないのですが、、、

普通なら使用します。
>オラクルサーバとVBプログラムは同一マシン上
>会社のパソコンはSQL*PLUS を起動する際に、パスワードとユーザーは入力しますが、ホスト文字列は空白のままなので
とあるので、Net8 Easy Configを使用してDBを指定するような、設定はいらないと言うことです。


ですので
>Set OraDatabase = OraSession...続きを読む

QEXCEL_VBAでOracleにADO接続してSQL文で追加/更新したい

EXCELで入力した値をADO接続して
SQL文で登録したいのですが 誰かサンプルソース
作成していただけないでしょうか?

Aベストアンサー

手抜きのような気もしますが…
Oracle OLACLEDBデータベースのSCOTTスキーマに「テスト」テーブルがある物とします。
NAME VARCHAR2
KOE VARCHAR2

Excelでは、ツール-参照設定で"Microsoft ActiveX Data Objects 2.0 Library"を参照します。

Module1を作成して、
↓ここから
Option Explicit

' ADOのオブジェクト変数を宣言
Private cnn As New ADODB.Connection
Private cmd As New ADODB.Command

Private Sub sTest()
On Error GoTo err_hdr
' Oracleの接続
cnn.Open "Provider=MSDAORA;" & _
"Data Source=ORACLEDB;", "SCOTT", "TIGER"
Set cmd.ActiveConnection = cnn
'追加の例
With cmd
.CommandText = "INSERT INTO テスト" _
& " (NAME , KOE)" _
& " VALUES ( '" & "ねこ" & "'" _
& " , '" & "にゃん" & "')"
.CommandType = adCmdUnknown
.Execute
End With
'更新の例
With cmd
.CommandText = "UPDATE テスト" _
& " SET テスト.NAME='" & "ねこ" & "'" _
& " , テスト.KOE='" & "にゃお~ん" & "'" _
& " WHERE " _
& " テスト.NAME='" & "ねこ" & "'" _
& " AND テスト.KOE='" & "にゃん" & "'"
.CommandType = adCmdUnknown
.Execute
End With
'削除の例
With cmd
.CommandText = "DELETE FROM テスト" _
& " WHERE " _
& " テスト.NAME='" & "ねこ" & "'" _
& " AND テスト.KOE='" & "にゃお~ん" & "'"
.CommandType = adCmdUnknown
.Execute
End With

cnn.Close

Set cmd = Nothing
Set cnn = Nothing
Exit Sub
err_hdr:
Resume Next
End Sub
↑ここまで

「ねこ」とかの代わりにExcelシート上のセルからデータを取得して
セットするように改造下さればなんとかなるかと思います。

手抜きのような気もしますが…
Oracle OLACLEDBデータベースのSCOTTスキーマに「テスト」テーブルがある物とします。
NAME VARCHAR2
KOE VARCHAR2

Excelでは、ツール-参照設定で"Microsoft ActiveX Data Objects 2.0 Library"を参照します。

Module1を作成して、
↓ここから
Option Explicit

' ADOのオブジェクト変数を宣言
Private cnn As New ADODB.Connection
Private cmd As New ADODB.Command

Private Sub sTest()
On Error GoTo err_hdr
' Oracleの接続
cnn.Open "Provider=M...続きを読む

Q実行時エラー429

あるプログラムを起動させようとすると
以下のメッセージが出てきてしまい起動できません。

実行時エラー429
ActiveXコンポーネントは、オブジェクトを作成できません。

対応策は、ございますか?
VB6の最新版は、ダウンロード済みです。
http://www.vector.co.jp/soft/win95/util/se188840.html

Windows98
Office97

諸事情でこちらの環境を替える事は、
出来ないんです・・・

Aベストアンサー

こんばんは。

よくわからないのですが、dao360.dllが入っていないから出るメッセージならば
下記参考URLからダウンロードしてみてはいかがでしょうか。

参考URL:http://www.vector.co.jp/soft/win95/util/se257084.html?site=n

Qoracle11g(64bit)に接続

クライアント側 oracle_Client10.2.3 windows2003
サーバ側 oracle11g(64bit)Windows7(64bit)

で接続したいのですが、tnsnameのhostをサーバ側のIPに変更しました。

tnspingでTNS_12542のエラーがでます。


リスナーの登録ができていないと思います。
仕方をおしてください。

Aベストアンサー

サーバのlistener.oraと
クライアントのtnsnames.oraとhosts
を見せてください。サーバ名やサービス名はxxxx,yyyyとかにして。
あとサーバ側でlsnrctl statusってやった結果も

QExcelとOracleの連携について

お世話になります。

Excelで[データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース]
-「ODBC DSN」-「接続するODBCデータソース」-「OracleDNS」
-「Oracle ODBCドライバ接続」ではOracleに接続する事は出来、データも
Excel上に表示する事が出来ました。

しかし、下記HPの
http://www.atmarkit.co.jp/fdb/rensai/excel2oracle02/excel2oracle02_2.html
サンプルコードを元にVBAコードを作成したのですが、
'データベース接続処理がうまくいっていない様で、

Err_Han:
' エラー処理
MsgBox (Err.Description)

で、「ORA-12154:TNS: 指定された接続識別子を解決できませんでした」
と言うエラーになってしまいます。

VBAにてADOの参照設定とかしていないのですが原因はそれでしょうか。

どなたかご親切な方、ご教示くださいます様、宜しくお願い致します。

Aベストアンサー

No.2です。

>Excelで[データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース]
>-「ODBC DSN」-「接続するODBCデータソース」-「OracleDNS」
>-「Oracle ODBCドライバ接続」ではOracleに接続する事は出来、データも
>Excel上に表示する事が出来ました。
なのだから、DSNはあるのですよね。すみません。

実を言うと、私は通常ADO+OLE DBを使っているのでODBCに関しては良くわかりません。
・・・申し訳ありません

ADO+OLE DB は特にソフトをインストールなどは必要ありません。
(「ADOの参照設定とかしていないのですが」とありますが、そのエラーならばActiveX Data Objects に参照設定されていると思います。それ以外の設定は特にありません)
こちらの方が(oo4oよりは劣るにしても)パフォーマンスが多少良いとのことですし、一度試されてはいかがでしょうか。

QVB.NET Oracle接続 32、64bit

VB.NET 2010でOracle11gに接続するプログラムを作っていますが、
接続方法がいまいちわからずに困っています。

プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、
Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。

ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。
パラメータ値は例です。
(Web.configに記述)
<connectionStrings>
<add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1"
providerName="System.Data.OleDb" />
</connectionStrings>


次に、コンソールプログラムを作成し、同じサーバーで上記と同様の接続文字列で
接続しようとしましたが、エラーとなり接続できませんでした。

いろいろ記述を変えても接続できませんでしたが、最終的にOracle Clientの
32bit版を64bit版と違うフォルダにインストールし、以下の接続文字列で接続
できました。(INIファイルに記載)
ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1

この状態でWEBアプリの方は何を使っているのかと思い、64bit版のインストールフォルダを
リネームしたところ、WEBアプリの方は接続できなくなりました。


現状では32bitと64bitのOracle Clientが両方必要な状況ですが、本来ならどちらかだけで
すむと思います。
32bitと64bitで接続文字列が変わるという情報は得られませんでした。
何がまずいのでしょうか?
最初から32bit版をインストールすれば良かったのでしょうか。

VB.NET 2010でOracle11gに接続するプログラムを作っていますが、
接続方法がいまいちわからずに困っています。

プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、
Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。

ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。
パラメータ値は例です。
(Web.configに記述)
<connectionStrings>
<add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=p...続きを読む

Aベストアンサー

先ず、大前提として32bitプログラムのプロセス空間には
32bitのDLLしかロードできません。同様に64bitのそれは
64bitのDLLしかロードできません。
OLEの実装にはDLL型とEXE型があり、前者は同一の
プロセス空間にあるため、32bitプログラムからは32bitの、
64bitプログラムからは64bitのDLL実装でなければ動き
ません。

OLEをインスタンス化する時に使うクラス名はレジストリに
登録されており、最終的に処理を担うDLLかEXEのパスに
行き着くようになっています。互換性を保つため、クラス名は
以前から変わっていませんし、32/64の区別もありません。
OracleのOLEはDLL型実装なので、32bitか64bitのどちらか
一方しか処理できません。

ここでは”OraOLEDB.Oracle”が示す最終パスは後から
インストールした方に切り替えられているはずです。
サーバが64bitなら、64bit版で統一すべきでしょう。
32bit版をアンインストールして、もう一度、64bit版を
インストールした方がよいでしょう。
そして、コンソールプログラムの方を64bit版でリビルドする
ことを薦めます。Visual Studio 2012ならどちらでもビルド
できます。

先ず、大前提として32bitプログラムのプロセス空間には
32bitのDLLしかロードできません。同様に64bitのそれは
64bitのDLLしかロードできません。
OLEの実装にはDLL型とEXE型があり、前者は同一の
プロセス空間にあるため、32bitプログラムからは32bitの、
64bitプログラムからは64bitのDLL実装でなければ動き
ません。

OLEをインスタンス化する時に使うクラス名はレジストリに
登録されており、最終的に処理を担うDLLかEXEのパスに
行き着くようになっています。互換性を保つため、クラス名は
以前から変わって...続きを読む

Q実行時エラー’429’: ActiveXコンポーネントはオブジェクトを作成できません。

源氏物語夕顔編というフリーで、広告が表示されるのタイピングソフト
をインストールすると、

「実行時エラー’429’: ActiveXコンポーネントはオブジェクトを作成できません。」

というエラーが表示されるようになり、
ソフトをアンインストールしたのですが、
Windows XPの起動時に必ず
このメッセージが出るようになってしまっています。

インストールしたタイピングソフトはコチラです↓
http://www.vector.co.jp/soft/win95/edu/se448263.html

調べたところ、ランタイムという実行環境が無くなってしまったようなのですが、どうやって修正すれば良いかわからず、

このメッセージを消す方法をご存じでしたら教えてください!

エラーメッセージを添付致します。

Aベストアンサー

こんにちは。

何らかの原因で、時間がかかり過ぎて、インストールができなかったものと考えます。

「スタート」「検索」「ファイルとフォルダーすべて」を選択「ActiveX」と入力。「検索開始」。

検索された中に「源氏物語夕顔編のActiveX」が出てくるかもしれません。右クリックで「削除」をして、再度「源氏物語夕顔編」へアクセスしてみてはいかがでしょうか。

Q.VBSだとADODBのプロバイダが見つからない件

こんばんは

.vbsファイルからデータベースを操作しようとして躓いています。
エクセルvbaでは動いているのに、.vbsに移植するとエラーが出てしまいます。
エラーの内容は「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」です。

次のスクリプトです。

'ここから
Dim ADO_CONNECT
Dim MDBName
Dim dbCon
Dim strSQL

ADO_CONNECT = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
MDBName = WScript.Arguments(0) 'エクセルVBAの場合はハードコード
Set dbCon = CreateObject("ADODB.Connection")
dbCon.Open ADO_CONNECT & MDBName & ";"
strSQL = "命令文"
dbCon.Execute (strSQL)

'ここまで

プロバイダーの場所、バージョン、32/64ビット、あたりに問題がのかもしれませんが、調べてもよくわかりません。エクセルVBAでは動作するので、参照設定?の違いなのかもしれません。どのように解決したら良いでしょうか。

Win 7 Pro 64bit
MS Accessなし
Excel 2007 あり

こんばんは

.vbsファイルからデータベースを操作しようとして躓いています。
エクセルvbaでは動いているのに、.vbsに移植するとエラーが出てしまいます。
エラーの内容は「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」です。

次のスクリプトです。

'ここから
Dim ADO_CONNECT
Dim MDBName
Dim dbCon
Dim strSQL

ADO_CONNECT = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
MDBName = WScript.Arguments(0) 'エクセルVBAの場合はハードコード
Set dbCon = CreateOb...続きを読む

Aベストアンサー

スクリプトを32bit版ファイラーから試すと問題ありませんでした。
が、Explorer (64bitで動作)から試すと同じエラーになりました。
Explorer 64bit で動作

Wscript も64bitが呼ばれる

ADODB の64bit版は存在しないのでエラー発生の流れかと思います。
(Win7 64bit & Office 2010 64bit でもほんの少しだけ確認)

なので、
http://d.hatena.ne.jp/KenKens/20140312/1394641831
の中ほどにあるように32bit版で起動しなおすようにすれば解決するものと思われます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング