У меня проблема с объяснением проблемы при работе с VBA и VB.NET. Я запускаю проект в VBA с необходимыми данными доступа. Я использовал ADO (Активные данные объекта 6.1), все работает отлично с этим примером кода:Различные в VBA и VB.NET для объекта ADO
Option Explicit
Private uConnect As ADODB.Connection
Private uCommand As ADODB.Command
Private uRecordset As ADODB.Recordset
Public Sub openConnection()
On Error GoTo ERRHANDLE:
Dim sConnection As String
sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & "database.xlsx;" & _
"Extended Properties=Excel 12.0;"
'declare
Set uConnect = New ADODB.Connection 'give memory
uConnect.ConnectionString = sConnection
uConnect.Open
ERRHANDLE:
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Error"
End If
End Sub
Когда я начинаю еще один проект с VB.NET с такой же ситуации. Сначала я пытаюсь COM ссылку на ADO (активные данные объекта 6.1) или с помощью ссылки на сборку ADODB и не работает с ошибкой «Provider не найден», код:
Public Class Input
Private Const connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=" & sSource & ";" &
"Extended Properties=Excel 12.0;"
Private Sub btnGetData_Click(sender As Object, e As EventArgs) Handles btnGetData.Click
Dim cn As New Connection
Dim da As New Recordset
Dim sSQL As String
Try
My.Computer.Audio.PlaySystemSound(SystemSounds.Exclamation)
da = New Recordset
cn = New Connection
cn.ConnectionString = connstring
cn.Open()
MessageBox.Show(cn.State.ToString)
cn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, "Database Input Error")
End Try
End Sub
End Class
Моя система выиграть 10. 64 бит. офис 64 бит.
Я нашел в Интернете решение для установки, Access Database Engine. Проблема решена для второго случая. Но почему это различие в VBA и VB.NET, почему VBA не нужно устанавливать больше движка для запуска.
, что если вы измените проект для запуска, как '' x86' или AnyCpu' я бы попытаться изменить свойство проекта на '. x86' также убедитесь, что вы не получаете ссылку от GAC по сравнению с тем, что у вас есть в вашей ссылке на проект, также посмотрите на изменение свойства 'CopyLocal =' для этой Dll на 'True' – MethodMan
Зачем использовать библиотеку COM ADODB вместо использования управляемого поставщика, например 'System.Data.Odbc'? – Comintern
@MethodMan: Я пытаюсь как x86, так и x64 работать не будет, пока не установлю механизм доступа к базе данных [link] (http://www.connectionstrings.com/the-microsoft-ace-oledb-12-0-provider-is- not-registered-on-the-local-machine /) –