Oracle DataAccessClientを使用してOracleデータベースにクエリを実行する必要があるアプリケーションをVB.NETで作成しています。次に、SCAPIインターフェイスと呼ばれるものを使用して、データモデリングに使用するアプリケーションのメタデータにアクセスします。
フォームのボタンをクリックして実行される2つの関数に問題を単純化しました。
この関数は、フォームのボタンをクリックすると実行されます。Oracle接続を作成しますが、実際にはクエリを実行しません(残りの部分をコメントアウトしてもエラーが発生するため):
Private Sub btnDisplayDirectories_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplayDirectories.Click
Dim ModelMart As String = "Data Source=...;User Id=...;Password=...;"
Dim OraConn As New OracleConnection(ModelMart)
OraConn.Open()
OraConn.Close()
OraConn.Dispose()
End Function
この関数は、SCAPIインターフェースを使用してアプリケーションオブジェクトを作成するだけです。
Private Sub btnOpenModel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenModel.Click
Dim oAPI As New SCAPI.Application
End Sub
アプリケーションを起動し、最初にbtnOpenModelをクリックしてから、btnDisplayDirectoriesをクリックしても問題はありません。btnDisplayDirectoriesをクリックしてから、btnOpenModelをクリックすると、btnOpenModelの最初の行に次のようなエラーが表示されます。
Retrieving the COM class factory for component with CLSID {2B2219EB-EDE7-49EE-BB89-5A0B4A398A63} failed due to the following error: 80004005.
私は実際に実験しましたが、このエラーを取得するためにOracle接続を開く必要はありません。OracleConnectionを定義するだけでエラーが発生します。