1

MS Access 2002 データベースへの OLEDB 接続が次のように開かれる VB.NET WinForm アプリケーションがあります。

Private Function MakeNewConnection(FullPath) As OleDbConnection
    Dim Conn As OleDbConnection = New OleDbConnection()
    Try
        Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + FullPath
        Conn.Open()
    Catch ex As Exception
        Throw ex
    End Try

    Return Conn
End Function

これは通常は問題なく動作しますが、Windows XP 32 ビット マシン (SP3) では散発的にエラーが発生します。散発的です。完全に機能することもあれば、単純にエラーをスローすることもあるためです。メッセージには次の 2 種類があります。不明なエラーまたは 'Microsoft.Jet.OLEDB.4.0' プロバイダーがローカル コンピューターに登録されていません。この投稿の最後に、例外のスタック トレースがあります。

私はすでに多くの検索を行ってきました。「プロバイダー」エラーは、主に 64 ビット ウィンドウに関係しています。私の場合、それは 32 ビット システムです。

何か案が?

エラーの詳細:

Error message: Unspecified error
Stack trace:    
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,      OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at QueryAgent.MakeNewConnection()    

Error message: the 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine
Stack trace:    at  System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr,  DataSourceWrapper& datasrcWrapper)
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at QueryAgent.MakeNewConnection()
4

1 に答える 1

0

ビルド オプションのビルドを任意の CPU オプションからシステム (32 ビット) に変更するだけです。Build>>>Configure>>>に移動し、ビルドオプションをAnyCPUからシステム固有に変更します! また、Microsoft からバージョン 12 の OLE-DB をダウンロードします。VS で上位バージョンの MS Access を使用している場合に役立ちます。これは、もともと (複数の OS とソフトウェアを使用して) エラーを回避できるためです。注: ソフトウェアの上位バージョンに移行する場合は、古いコピー (バックアップ) を保持してください。新しいバージョンに合わせて調整すると、古いバージョンでは使用できない可能性があるためです。

于 2012-10-10T16:37:24.827 に答える