古い XP マシンで 32 ビット アプリを作成しています。このアプリは Win7 以降でも動作します。
そのため、どの接続文字列が機能するかをテストしようとしています。そのような:
Private Function test_ace_or_jet(ByVal mdb_path As String) As String
Dim connString As String
Dim dbMaintPort As OleDb.OleDbConnection
connString = ""
Try
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & mdb_path
dbMaintPort = New OleDb.OleDbConnection(connString)
dbMaintPort.Open()
dbMaintPort.Close()
MsgBox("1 was found")
Catch ex As Exception
MsgBox("Could not open 1" & vbCrLf & vbCrLf & ex.Message)
Try
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb_path
dbMaintPort = New OleDb.OleDbConnection(connString)
dbMaintPort.Open()
dbMaintPort.Close()
MsgBox("2 was found")
Catch ex2 As Exception
connString = ""
MsgBox("Could not open 2" & vbCrLf & vbCrLf & ex2.Message)
End Try
End Try
test_ace_or_jet = connString
End Function
ただし、私が見つけた問題は、XP マシンでは、最初の接続文字列が失敗しないことです。ACE はまったくインストールされていません。
どちらを使用するかをテストするにはどうすればよいですか? 上記の関数を取得して、正しい接続文字列を取得できますか?