2017-01-19 42 views
1

ADODBを使用してoracle DBのデータを検証しようとしています。 Oracle Client x64ビットをインストールし、環境変数を正しく構成しました。なんらかの理由で、以下のコードはautomation errorを投げますが、これは問題の絞り込みにはあまり役に立ちません。ADODBを使用してoracle11g dbに接続できません

PS:私も、32ビット版のOracleクライアントをインストールして同じことを試みました。

Sub test() 
    myHost = "" 
    Database_Name = "" 
    myUsername = "" 
    myPassword = "" 
    serviceID = "" 
    myPort = "" 

    strConnectionString = "Driver={Oracle in OraClient11g_home1}; " & _ 
          "SERVER=(DESCRIPTION=" & _ 
          "(ADDRESS=(PROTOCOL=TCP)" & _ 
          "(HOST=" & myHost & ")(PORT=" & myPort & "))" & _ 
          "(CONNECT_DATA=(SERVICE_NAME=" & serviceID & "))); uid=" & myUsername & ";pwd=" & myPassword & ";" 

    Debug.Print strConnectionString 
    'Instantiate the Connection object and open a database connection. 
    Set cnn = CreateObject("ADODB.Connection") 
    cnn.Open strConnectionString 
    'Above line throws error 


End Sub 

エラーメッセージ

*

のMicrosoft Visual Basicアプリケーション

実行時エラー '-2147217843(80040E4D)' の:オートメーションエラーOKヘルプ

*

エキスパートサポートへのアプローチ。

答えて

0

OraClient11g_home1のドライバでOracleで動作することができませんでした。だから私は32ビットをインストールOracle用のMicrosoft ODBCと仕事を終えた。

Set objCon = CreateObject("ADODB.Connection") 
Set objRec = CreateObject("ADODB.RecordSet") 
Dim fieldName, fieldValue 
Dim host_name: host_name = "" 
Dim service_name: service_name = "" 
Dim user_name : user_name = "" 
Dim pass : pass = "" 
Dim strSQL : strSQL = "" 
Dim data_array 
data_array = Array("","","") 

conStr = "Driver={Microsoft ODBC for Oracle};Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" & host_name & ")(PORT=1525))(CONNECT_DATA=(SERVICE_NAME=" & service_name & "))); Uid=" & user_name & ";Pwd=" & pass &";" 
objCon.Open conStr  

objRec.Open strSQL, objCon 

Set objFields = objRec.Fields 
Do Until objRec.EOF 
    For intLoop = 0 To (objFields.Count - 1) 
     fieldName = objFields.Item(intLoop).Name 
     fieldValue = objFields.Item(intLoop).Value   
     If Cstr(fieldValue) = Cstr(data_arr(intLoop)) Then 
      Debug.print "Check value of " & fieldName & " Value of " & fieldName & " in DB " & fieldValue & " is same as application " & data_arr(intLoop) 
     Else 
      Debug.print "Check value of " & fieldName & " Value of " & fieldName & " in DB " & fieldValue & " is not same as application " & data_arr(intLoop) 
     End If 
    Next 
    objRec.MoveNext 
Loop 

objRec.Close 
objCon.Close 
関連する問題